【已解决】Android中EditText的style定义中parent的语法(写法)

【背景】

想要搞懂,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’.

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>

即可。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量