Android XML布局-将一个属性设置为小部件另一个属性的值

Android XML布局-将一个属性设置为小部件另一个属性的值,android,binding,Android,Binding,我想将一个自定义属性(在本例中为app:unfocusColor)设置为另一个属性(例如app:cardBackgroundColor)的值,这可能吗? 我尝试下面的方法,但有错误 <android.support.v7.widget.CardView ..... app:cardBackgroundColor="@android:color/holo_blue_bright" app:unfocusColor="@{app:cardBackgroundColor}"

我想将一个自定义属性(在本例中为app:unfocusColor)设置为另一个属性(例如app:cardBackgroundColor)的值,这可能吗? 我尝试下面的方法,但有错误

<android.support.v7.widget.CardView
   .....
    app:cardBackgroundColor="@android:color/holo_blue_bright"
    app:unfocusColor="@{app:cardBackgroundColor}"
   >

是的,你可以

比如说

创建res/valuesmyattr.xml

将此代码用作内容

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="myatt">
        <attr name="viewName" format="string"/>
    </declare-styleable>
</resources>
你的观点应该是这样的

<TextView
    app:number="1"
    android:id="@+id/specialViewId"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:ignore="MissingPrefix"></TextView>


最后,如果您想在不覆盖活动的情况下使用此选项,您可以使用LayourInflaterFactory界面

谢谢您的回复!。但这看起来很复杂。在我的示例中,我只想将app:unfocusColor设置为同一小部件的app:cardBackgroundColor属性的值。那么有没有一种简单的方法可以做到这一点,而不涉及任何逻辑代码或resource.xml?android card view没有app:focusColor和app:unfocusColor属性,我不知道你在用“@{app:cardBackgroundColor}”做什么,它看起来像是数据绑定,但我认为你用错了,看到链接了吗,谢谢你的回复。实际上app:focusColor和app:unfocusColor确实是我的自定义属性,它与类中的静态方法相关联。尽管如此,我还是试图为app:unfocusColor设置一个值,该值恰好与app:cardBackGroundColor的值相同。因此,我在想是否有任何方法可以避免两个属性的值重复我更新我的示例以删除app:focusColor,因为它与我的查询无关。虽然在我的示例中,我使用app:unfocusColor,但它实际上可以是任何值为颜色的现有属性。对于您的问题“我在想是否有任何方法可以避免两个属性的值重复”是,您可以在android layout xmls中声明变量,并在android中搜索数据绑定,或转到我之前评论中的链接
<TextView
    app:number="1"
    android:id="@+id/specialViewId"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:ignore="MissingPrefix"></TextView>