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工程中R.java文件的重新生成——注意资源文件的错误
  2. Android内核开发:系统分区与镜像文件的烧写
  3. 关于Android 动态加载 jar 文件
  4. android评分条RatingBar自定义设置
  5. Android系统编译―Android.mk文件的简单介绍
  6. android 工程中重新生成gen文件夹或R.java 文件
  7. Android深入浅出自定义控件(一)
  8. Android 自定义组合控件小结
  9. Android开发---从简单的TextView看Android的控件显示方式

随机推荐

  1. android 多媒体部分学习笔记十--简单视频
  2. Android handler用法详解二(例2)
  3. Android浏览器开发 WebView setBlockNetw
  4. android java.lang.IllegalStateExceptio
  5. android 各版本与api值 对应表
  6. Android - 对话框(Dialog)和通知(Notific
  7. Android之 BatteryService
  8. No 98 · Android 下载文件及写入SD卡(摘)
  9. Android 7.0使用相机功能
  10. android 让 webview 支持HTML中的