android 自定义主题

很多时候,系统的主题并不适用,app想要自己喜欢的主题,这个时候需要自定义一个主题。

这里就简单讲述一下自定义主题的步骤。(以DarkActionBar修改title大小为例)

一、相关文件:

主题相关的文件:

AndroidManifest.xml和styles.xml文件

在AndroidManifest中需要引用自定义的主题给app使用:

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/MyTheme" >
最后一样引用自定义的主题:MyTheme。

这个MyTheme,定义在styles.xml中。

这个sytyles.xml在目录:res/values/下面。

二、如何写自定应的styles.xml

认识一个东西,一定是先直观看上去,有了第一直观认知;再次进行详细的分析就能认识一个事物。

所以这里先看一下我们的demo中的styles.xml。(自定义:修改DarkActionBar的title字体大小)



    

    

    

命名并没有太规范,重点在于如何自定义主题。关注方法步骤即可。

说一下语法框架:其中里面的

下面看是讲述如何自定义:两步即可:祖寻根

自定义一个主题,定然不是全部自己写,现有android主题丰富,定然有个主题可以parent,只需要重新定义其中的部分属性而已。

举一反三,这里就之讲解title修改,其他的修改是一样的。

1.首先,

这里我们就想用DarkActionBar中的大多数现有效果,所以选定parent为@android:style/Theme.Holo.Light.DarkActionBar

2.其次,寻根

通过1找到了可以拿来继承的parent,绝大多数的属性都可以直接用了。少部分属性需要修改,这里我们就要抽丝剥茧,层层查找了,找到根属性来进行修改。

上面这句话可能比较难理解,拿上面的例子看一下,例子就是层层递进,到根style才可以。

目标是修改ActionBar的title,先继承DarkActionBar之后,还需要定义style Inverse--sytle TextAppreance然后在Item里写。

抛出两个问题:a.如何确定递进层?b.这个层层递进的终点到哪里

这两个问题解决了,方法也就掌握了。

a.如何确定递进层

首先明确是Holo.Light.DarkActionBar,其次明确修改actionbar的title大小。

这一步还是有难度的,层层递进的路径不是太好确定,DarkActionBar下面有很多属性,哪一个会包含这个title大小,只能点开去看了。(开发环境使用的AS,Eclipse一样)

直接ctrl+鼠标左建,进入定义:(只截取了部分)

好了,找到了,这里就是textSize的大小了。

b.寻根

其实这个步骤就夹杂在a步骤中,层层寻找,找到了具体的属性值定义的地方,也就到根了。

根和层的不同就在这里:

层还是@style,根则是具体的dimen、drawable等了。

到这里基本就搞定了。

写的时候,顺着来,一层一层写,最后把textSize的值改了就可以了。

三、开始书写

从原声定义:层次到根

actionBarStyle---Widget.Holo.Light.ActionBar.Solid.Inverse---TextAppearance.Holo.Widget.ActionBar.Title.Inverse---textSize


1.定义自己的theme,并继承需要的parent

3.后面的就类似了:

actionBarStyle---Widget.Holo.Light.ActionBar.Solid.Inverse,所以我们自定义的style Inverse需要继承:android:Widget.Holo.Light.ActionBar.Solid.Inverse,然后复写里面的titleTextStyle。以此类推。



这里为了突出效果,将title大小改为100px。


当然,这里只是修改title,其他的额像背景色等,类似修改,就可以订制出需要的主题了。

你可能感兴趣的:(android-view,属性,android)