Как включить / отключить настройки?
Я хочу, чтобы мой EditTextPreference не редактировался (как, например, ничего не происходит, когда вы нажимаете на элемент на странице настроек). Как я могу это сделать?
Вот мой код:
<PreferenceCategory android:title="My Account" >
<EditTextPreference
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:key="username_pref"
android:summary=" "
android:title="Username" >
</EditTextPreference>
</PreferenceCategory>
4 ответа
Вы можете сделать это программно или в формате.xml.
XML:
<EditTextPreference
android:enabled="false" >
</EditTextPreference>
Программный:
getPreferenceScreen().findPreference("yourpref").setEnabled(false);
Из документации Android:
"Если отключено, предпочтение не будет обрабатывать клики".
Поздний ответ, но согласно комментариям к принятому ответу кажется, что это была некоторая путаница.
Я не согласен с тем, что отключение всегда является правильным выбором для нередактируемых настроек. Например, в настройках Android: Система -> О телефоне -> Информация о состоянии телефона отображается в настройках, которые нельзя редактировать, и больше похожа на важную информацию, которая может понадобиться пользователю. Так как они никогда не редактируются на странице настроек, они должны отображаться как обычные предпочтения вместо отключенной EditTextPreference.
XML:
<Preference
android:key="username_pref"
android:title="Username" >
</Preference>
Это сделает ваши предпочтения кликабельными, но не редактируемыми.
Чтобы отключить клики и сделать параметр не затемненным, используйте следующий XML:
<EditTextPreference
android:enabled="false"
android:shouldDisableView="true" />
Или используйте следующий код Java:
EditTextPreference pref = (EditTextPreference)findPreference("yourkey");
pref.setEnabled(false);
pref.setShouldDisableView(false);
Ответ @Rawa мне помог. Я хотел добавить решение для динамического добавления не редактируемых предпочтений. В моем примере я добавляю предпочтение для отображения версии приложения. Обязательно установите ключ для категории предпочтений.
В
onCreatePreferences
:
// Add app version preference
val appVersionPref = Preference(context).apply {
title = "App Version"
summary = "v${BuildConfig.VERSION_NAME}"
}
val aboutPrefCategory = findPreference<PreferenceCategory>("YOUR_PREF_CATEGORY_KEY")
aboutPrefCategory?.addPreference(appVersionPref)