【背景】
想要搞懂,android中style中定义时,对于parent的写法到底是如何写的。
【折腾过程】
1.搜:
android style parent
参考:
android开发style详解 – yimigao@126的日志 – 网易博客
android style(样式)和theme(主题)设置 – 独自等待 – 博客频道 – CSDN.NET
2.之前错误写法:
写成了:
xxx
的形式:
<style name="Variable"> <item name="android:textSize">14sp</item> <item name="android:textStyle">normal</item> </style> <style name="Variable.Label" parent="Variable"> <item name="android:textColor">@color/VariableLabelColor</item> </style> <style name="Variable.Value" parent="Variable"> </style> <style name="Variable.Value.NonEditable" parent="Variable.Value"> <item name="android:background">@color/NonEditableBackgoundColor</item> </style>
应该去加上@style
变成:
@style/xxx
3.也不能写成@style/xxx_yyy的形式:
<style name="Variable"> <item name="android:textSize">14sp</item> <item name="android:textStyle">normal</item> </style> <style name="Variable.Label" parent="@style/Variable"> <item name="android:textColor">@color/VariableLabelColor</item> </style> <style name="Variable.Value" parent="@style/Variable"> </style> <style name="Variable.Value.NonEditable" parent="@style/Variable_Value"> <item name="android:background">@color/NonEditableBackgoundColor</item> </style>
否则会出错:
error: Error retrieving parent for item: No resource found that matches the given name ‘@style/Variable_Value’. |
应该写成:
@style/xxx.yyy
的形式:
<style name="Variable"> <item name="android:textSize">14sp</item> <item name="android:textStyle">normal</item> </style> <style name="Variable.Label" parent="@style/Variable"> <item name="android:textColor">@color/VariableLabelColor</item> </style> <style name="Variable.Value" parent="@style/Variable"> </style> <style name="Variable.Value.NonEditable" parent="@style/Variable.Value"> <item name="android:background">@color/NonEditableBackgoundColor</item> </style>
【总结】
至此,才算基本明白:
的确是:
先定义一个style:
<style name="Variable"> <item name="android:textSize">14sp</item> <item name="android:textStyle">normal</item> </style>
然后后续在别的子的style中用parent引用,写法是:
@style/xxx
其中xxx是原先的style的名字。
<style name="Variable.Label" parent="@style/Variable"> <item name="android:textColor">@color/VariableLabelColor</item> </style> <style name="Variable.Value" parent="@style/Variable"> </style> <style name="Variable.Value.NonEditable" parent="@style/Variable.Value"> <item name="android:background">@color/NonEditableBackgoundColor</item> </style>
即可。