Android 如何启用/禁用首选项?

Android 如何启用/禁用首选项?,android,android-preferences,edittextpreference,Android,Android Preferences,Edittextpreference,我想使我的EditTextPreference不可编辑(如中所示,单击设置页面中的项目时不会发生任何事情)。我该怎么做 这是我的密码: <PreferenceCategory android:title="My Account" > <EditTextPreference android:clickable="false" android:focusable="false" android:focusableInTouc

我想使我的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>



您可以通过编程方式或在.xml中执行此操作

XML:

<EditTextPreference
    android:enabled="false" >
</EditTextPreference>
getPreferenceScreen().findPreference("yourpref").setEnabled(false);
<Preference        
    android:key="username_pref"
    android:title="Username" >
</Preference>
从Android文档中:

如果禁用了,首选项将不会处理单击操作


迟交的答复,但根据对已接受答复的评论,似乎有些混乱

我不同意禁用总是不可编辑设置的正确选择。例如,在您的Android设置中:
System->About Phone->Status information
有关于您手机的信息。这些在设置列表中,但不可编辑,这是用户可能需要的重要信息。由于它们从不可从“设置”页面编辑,因此显示为正常的首选项,而不是禁用的EditTextPreference

XML:

<EditTextPreference
    android:enabled="false" >
</EditTextPreference>
getPreferenceScreen().findPreference("yourpref").setEnabled(false);
<Preference        
    android:key="username_pref"
    android:title="Username" >
</Preference>


这将使您的首选项可单击但不可编辑。

@Rawa-answer帮助了我。我想添加一个动态添加不可编辑首选项的解决方案。例如,我正在添加一个首选项以显示应用程序版本。请确保为首选项类别设置密钥

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)
//添加应用程序版本首选项
val appVersionPref=首选项(上下文)。应用{
title=“应用程序版本”
summary=“v${BuildConfig.VERSION\u NAME}”
}
val aboutPrefCategory=FindReference(“您的首选类别键”)
aboutPrefCategory?.addPreference(appVersionPref)
请参见下面的结果截图

要禁用单击并使首选项不变暗,请使用以下XML:

<EditTextPreference
android:enabled="false"
android:shouldDisableView="true" />

这是可行的,但现在该项目是“灰色的”。这里是一个是的,当然是。这是不可单击/禁用的项目的Android默认视觉表示(例如,禁用的按钮看起来相同)。我强烈建议(也是为了您的用户)保持这种方式。同意!不要隐藏单击事件。这是一个糟糕的用户界面体验。好吧,听起来很棒!非常感谢你的帮助。看起来让人困惑的部分是标题。