Android 中的 Theme 样式与主题

样式是一套能够应用于视图组件的属性.

例如:

<style name="tv_style_red">
    <item name="android:gravity">center</item>
    <item name="android:textSize">15sp</item>
    <item name="android:textColor">@color/red</item>
</style>

只要有这些属性的控件都可以这样使用:

<TextView
   android:textIsSelectable="true"
   android:id="@+id/tv_orderType"
   android:layout_alignParentLeft="true"
   style="@style/tv_style_red"
   android:layout_width="wrap_content"
   android:layout_height="match_parent" />

样式继承

  样式支持继承。一个样式能继承并覆盖其他样式的属性。

1.命名继承   要以主题名的形式指定父主题有继承关系的两个主题都应处于同一个

<style name="tv_style_red">
    <item name="android:gravity">center</item>
    <item name="android:textSize">15sp</item>
    <item name="android:textColor">@color/red</item>
</style>
//覆盖textSize的值
<style name="tv_style_red.textSize12">
    <item name="android:textSize">12sp</item>
</style>

2.parent的指定 库要跨库继承,就一定要明确使用parent属性

<style name="tv_style_red_textSize12" parent="tv_style_red">
    <item name="android:textSize">12sp</item>
</style>

<Button xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:id="@+id/list_item_sound_button" 
 android:layout_width="match_parent" 
 android:layout_height="120dp" 
 android:background="?attr/colorAccent" 
 tools:text="Sound name"/>
上述XML中?符号的意思是使用colorAccent属性指向的资源。这里,是指定义在colors.xml
文件中的灰色

也可以在代码中使用主题属性:
Resources.Theme theme = getActivity().getTheme(); 
int[] attrsToFetch = { R.attr.colorAccent }; 
TypedArray a = theme.obtainStyledAttributes(R.style.AppTheme, attrsToFetch); 
int accentColor = a.getInt(0, 0); 
a.recycle();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值