AndroidX MultiSelectListPreference设置占位符

问题描述 投票:0回答:1

我有一个使用的AndroidX偏好API和我使用的是MultiSelectListPreference它获取动态填充它的项偏好屏幕。

原因在于,这些条目阵列可以是空的,在这种情况下,我想展示像“找不到项目”一文。目前,我尝试设置占位符文本作为一款入门,虽然这在技术上的作品,它允许用户选择该条目(复选框仍然出现)。

关于如何显示占位符文本,但要确保该复选框没有出现任何想法?

谢谢

android android-preferences androidx
1个回答
0
投票

可以初步确定MultiSelectListPreference为您的喜好XML文件中禁用,然后以编程方式使用Preference#setEnabled一旦值设置启用。

参阅下面的一个例子:

pref_todo.xml

<androidx.preference.PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- ... -->

    <MultiSelectListPreference
      app:enabled="false"
      app:title="@string/pref_weekly_summary_title"
      app:summary="@string/pref_weekly_summary_summary"
      app:key="pref_weekly_summary" />

    <!-- ... -->
  </androidx.preference.PreferenceScreen>

您的喜好片段的代码(JAVA):

import androidx.preference.PreferenceFragment;
import androidx.preference.MultiSelectListPreference;
// ...

public class TodoPreferenceFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootkey) {
        setPreferencesFromResource(R.xml.pref_todo, rootKey);
        // Cast from a Preference to a MultiSelectListPreference
        MultiSelectListPreference weeklySummaryListPref = (MultiSelectListPreference) findPreference("pref_weekly_summary");

        // Set the entries
        weeklySummaryListPref.setEntries(new CharSequence[]{"Todos progress", "Todos completed"});
        weeklySummaryListPref.setEntryValues(new CharSequence[]{"todos_progress", "todos_completed"});

        // Lastly, reenable the preference
        weeklySummaryListPref.setEnabled(true);
    }
}

您的喜好片段的代码(科特林W / KTX偏好)

import androidx.preference.PreferenceFragment
import androidx.preference.MultiSelectListPreference
// ...

class TodoPreferenceFragment: PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.pref_todo, rootKey)
        // Cast from a Preference to a MultiSelectListPreference
        // Note: This syntax is only supported on AndroidX Preference versions 1.1.0-alpha02 and up
        val weeklySummaryListPref = findPreference<MultiSelectListPreference>("pref_weekly_summary")

        // Set the entries
        weeklySummaryListPref.entries = arrayOf("Todos progress", "Todos completed")
        weeklySummaryListPref.entryValues = arrayOf("todos_progress", "todos_completed")

        // Lastly, reenable the preference
        weeklySummaryListPref.enabled = true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.