[关闭]
@XQF 2017-02-11T14:21:13.000000Z 字数 1021 阅读 1315

深入理解样式,主题

《Android探险》


1.什么是样式

style在values文件夹下的一个文件。在里面可以定义不同的样式。

比如我的按钮样式。
结合实例解释:在登陆界面和注册界面中,我想把登陆按钮和注册按钮写得基本差不多。(颜色,大小完全一样,只不过点击事件和文字属性不一样)那么我是不是要把两种几乎相同的代码重写好几遍?然而懒惰即为美德,本来我们想设计成一样就是为了减少工作量。于是想到了类似include标签的思路。我选择让两个按钮同时使用一套属性。这个怎么来实现,就是通过这个style来实现。到时候直接在属性集中引用该属性就OK了。

当然样式的使用还设计样式继承和样式覆盖。
样式继承说的是我想在上一个样式的基础上增加一个东西。比如我还有个确定和退出按钮。这两个按钮的属性和上面两个按钮的属性要大致差不多,但是又有一点点大小或者其他的差别。

样式覆盖是说的是我可以在使用该样式的同时重新写个和样式内部属性一样的属性,只不过值不同。比如我想法变了,我不想让登陆和注册按钮的颜色一样,让他们颜色不一样,假如此时样式内部的颜色为白色,此时我就可以在外部使用相同的颜色属性,但是值我给成绿色。这样就完成了覆盖。

关于样式继承的时候要注意的时候,继承方式的选择。这里不是说的私有和共有。假如你是继承在同一个包里的样式,可以按照样式名字加上.的方式。同时也可以通过显式指定parent的方式。但是,要是你继承的样式不在同一个包内的话就只能使用第二种,即显式指定parent的方式

2.什么是主题

主题是更大的样式。在这个主题中我可以把这个应用中所有按钮的背景色甚至是背景图片都写成一样。把这个应用的标题栏和操作栏的颜色都弄成一样,弄成我想要的颜色。

注意在主题中也涉及到继承和覆盖的问题。往往我们要覆盖某个属性然而要往上查找很多层的继承树。比如修改这个主题下的所有按钮的背景色。一直往上找,终于找到按钮的属性,发现也是个引用,这些引用引用的资源往往是Android操作系统内部的资源。于是我们可以去修改那个引用资源文件内容也可以重新指定我们自己写的资源引用。要是在不同的包里,我们还是要使用显式指定的方法。

3.文件引用的格式

  1. @ 引用指向某个特定的资源
  2. ?attr/ 也是指向某个特定的资源,只不过这个资源是我们已经在主题中已经定义过的资源,所以又叫引用主题资源
  3. @android: 这就是引用操作系统的资源了
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注