0

Preference 多个选择并排的示例

我正在尝试在我的 PreferenceScreen 中添加一个首选项,允许用户从相邻的一行中的多个条件中选择一个条件(如上图)。

android是否有一种预先构建的方式来做到这一点,或者我必须创建一个自定义偏好布局来实现这一点。如果是的话,最好的方法是什么。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:title="Preferences">
<Preference
    android:key="title"
    android:title="title"
    android:layout="@layout/preference_title"
    />
<SwitchPreference
    android:key="dark_mode"
    android:title="DarkMode"
    android:defaultValue="false"/>

//Instead of Switch Preference for Dark Mode 

</PreferenceScreen>
4

1 回答 1

0

没有这样的预先构建的偏好布局。您只需要使用水平 RadioGroup 创建自定义首选项。

two_inline_button_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingStart="?android:listPreferredItemPaddingStart"
    android:paddingEnd="?android:listPreferredItemPaddingEnd">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start" />
    </FrameLayout>

    <RadioGroup
        android:id="@+id/two_inline_button_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/left"
            android:layout_weight="1.0"
            android:button="@android:color/transparent" />

        <RadioButton
            android:id="@+id/right"
            android:layout_weight="1.0"
            android:button="@android:color/transparent" />
    </RadioGroup>
</LinearLayout>

你的偏好xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    app:title="Preferences">

    <InlineButtonPreference
        android:key="dark_mode"
        android:layout="@layout/two_inline_button_layout"
        custom:titleText="DarkMode"
        custom:startText="ON"
        custom:endText="OFF" />
</PreferenceScreen>

TwoInlineButtonPreference.kt

class TwoInlineButtonPreference : Preference {
    
    ....

    override fun onBindView(view: View) {
        super.onBindView(view)
        val radioGroup = view.findViewById(R.id.two_inline_button_layout) as RadioGroup
    }
}
于 2020-07-07T13:32:41.600 回答