首页 > 解决方案 > 可以在样式中完全限定可声明样式的属性(以避免命名冲突)吗?

问题描述

在下面的样式中,可以button_csl用定义它的样式来完全限定,如

<item name="com.inc.app.LabeledButton:button_csl">@color/button_bar_csl_white</item>    

例如,这样它就不会与另一个属性发生潜在冲突?

<!--ImageView-->
<style name="ButtonBar_LabeledButton_NavBar" parent="ButtonBar_LabeledButton">    
  <item name="com.inc.app:button_csl">@color/button_bar_csl_white</item>    
</style>

该属性button_csl在以下样式中定义

<declare-styleable name="LabeledButton">
  <attr name="button_csl" format="reference"></attr>
</declare-styleable>

但是,如果声明了具有相同属性的新样式,如何解决冲突?

<declare-styleable name="NewStyleableButton">
  <attr name="button_csl" format="reference"></attr>
</declare-styleable>

读取属性时这似乎不是问题,因为它们的范围仅限于特定的样式(即Resource.Styleable.LabeledButton_button_csl

private void ReadAttributes(Context context, IAttributeSet attributes)
{
    Android.Content.Res.TypedArray typedArray = context.ObtainStyledAttributes(attributes, Resource.Styleable.LabeledButton);

    _button_csl = typedArray.GetResourceId(Resource.Styleable.LabeledButton_button_csl, 0);

    typedArray.Recycle();
}

但是,对于样式定义,似乎存在歧义

<!--ImageView-->
<style name="NewButtonStyle">
  <item name="com.inc.app:button_csl">@color/button_bar_csl_white</item>    
</style>

标签: android

解决方案


推荐阅读