如何将自定义属性的值从父视图“级联”到其子视图?
使用示例最容易解释:
<com.example.CustomLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:percent="35" >
<com.example.CustomView
android:id="@+id/customView1"
app:percent="how-to-get-app:percent-value-here???"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</com.example.CustomLayout>
在这里,CustomLayout
扩展LinearLayout
。我在attrs.xml
使用<declare-styleable>
元素时定义了一个自定义属性“百分比”。如您所见,我在 .xml 的 XML 中将 percent 设置为 35 CustomLayout
。
我现在想将相同的值传递给CustomView
(which extends View
) 并且我将包含在CustomLayout
. 我无法找到在 XML 中执行此操作的方法(尽管在代码中很容易执行此操作)。
我尝试了以下方法:
app:percent="@attr/percent"
app:percent="?attr/percent"
这两个(预期)都失败了NumberFormatException
at TypedArray#getInt()
。
那么,关于如何让它发挥作用的任何想法?