Android主题定制及修改

简介:在写Android的App时,我们在Layout中的xml文件中都会引用到大量的布局组件及风格,有时Android提供的原生组件并不能满足我们的需求,这时我们就要考虑对style及theme进行定制及修改。

布局文件的解释原理:
在Layout的每一个控件如TextView、EditText、Button等,例如Button控件,在目录frameworks/base/core/java/android/widget/下存在Button.java这个文件,在Button.java代码:
        public Button(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.buttonStyle);
    }
    public Button(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    在layout中的布局控件就是引用的Button.java这个控制,写完App程序进行编译时,它会自动引用及关联相应的控件定义。第一个构造函数是Button的默认style,而第二个会根据写app写的style进行选择需要的style.Button继承自TextView.java,在这个文件中的构造函数会看到选择的过程,这个构造函数是相当庞大的一个函数。

Button.java有引用相关的style及主题,例如在Button.java就引用了buttonStyle这个style,在写layout就可以在Button这个控制中加入这个style,所有的风格的定义都是在framework中的在frameworks/base/core/res/res/values/themes_device_defaults.xml有关于所有style的theme的名字,这些style的定义在frameworks/base/core/res/res/values/styles_device_defaults.xml文件中,进扩展Item便可以得到某个style的的所有属性。

在styles.xml存在这个的定义:
       
    这里的Widget.DeviceDefault.Button继承自Widget.Holo.Button,这里Widget.Holo.Button style便拥有Widget.Holo.Button 控件上的所有属性及功能,这里跟类继承非常类似,如果不需要Widget.Holo.Button控件的一些item,可以进行重写,
    
    便对android:textcolor进行了复写,这里把XXX可以在一个xml定义,并写上相应的颜色值,由于在framework中进行了修改,所有在app中引用的这个控件都将进行修改。如果不想在所有的app中这个控件都起作用,便可以在app中对这个控件进行重写。将style写在一个app的layout中的xml文件,只对此app起作用。

更多相关文章

  1. android:padding 和 android:margin的区别
  2. Invalidate和postInvalidate的区别
  3. Android(安卓)NDK 面试题汇总
  4. 安卓中一些常用的属性小结
  5. android的常见类(一)
  6. @+id/android:list"和"@android:id/list"的写法
  7. 如何将android view的位置设为右下角
  8. 告别 USB,用 wifi 进行 Android(安卓)真机调试
  9. RelativeLayout属性和使用, 实现上面view叠加在下面view之上的效

随机推荐

  1. Flutter Android(安卓)端集成 Bugly 的异
  2. android Handler的使用(二)
  3. android如何实现加载本地字体
  4. GitHub“最受欢迎的开源项目” TOP 50 an
  5. Android客户端消息推送原理简介
  6. 更改Android应用程序的图标
  7. Android(安卓)4.0 和 Galaxy Nexus 香港
  8. 【Android笔记】Android(安卓)Resourse
  9. 一些好的博客收集(持续更新中)
  10. 第一章:初入Android大门(教程篇)(上)