Как мне "каскадировать" значение настраиваемого атрибута из родительского представления в его дочернее представление?
Это проще всего объяснить с помощью примера:
<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
. Я определил пользовательский атрибут "percent" в attrs.xml
с помощью элемента <declare-styleable>
. Как вы можете видеть, я установил процент в 35 в XML для CustomLayout
.
Теперь я хочу передать то же значение в CustomView
(которое расширяет View
) и которое я буду включать в CustomLayout
. Я не могу найти способ сделать это в XML (это легко сделать в коде, хотя).
Я попробовал следующее:
app:percent="@attr/percent"
app:percent="?attr/percent"
Оба из этих (ожидаемых) неудач с NumberFormatException
в TypedArray#getInt()
.
Итак, любые идеи о том, как заставить это работать?