Как включить / отключить настройки?

Я хочу, чтобы мой 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)

Смотрите скриншот результата ниже

Другие вопросы по тегам