Я хочу иметь собственный макет SwitchPreference и передать ему параметр «title», подобный следующему:
<SwitchPreference
android:key="@string/key"
app:passedTitle="@{@string/title}"
android:layout="@layout/custom_layout"
android:defaultValue=5 />
таким образом, я могу использовать один и тот же макет для разных SwitchPreferences, но изменить отображаемый заголовок.
Я знаю, что могу нормально связать данные следующим образом:
<include
layout="@layout/custom_layout"
app:passedTitle="@{@string/title}"
в сочетании с пользовательским макетом, например:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<data>
<variable
name="passedTitle"
type="String"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
style="@style/SettingsSubHeader"
android:text="@{passedTitle}" />
<!-- Must have this id or else won't save value! -->
<Switch
android:id="@android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
</layout>
Однако я не могу получить значение passedTitle
для передачи в пользовательское представление, если я просто устанавливаю их, используя параметр andriod:layout
в SwitchPreference (поскольку я не могу использовать <include>
).
Есть ли у вас какие-либо идеи о том, как я могу передать значение своему пользовательскому макету при использовании предпочтения?