9

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

4 回答 4

21

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

XML:

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

以编程方式:

getPreferenceScreen().findPreference("yourpref").setEnabled(false);

来自 Android 文档:

“如果禁用,首选项将不会处理点击。”

于 2014-03-17T00:27:13.103 回答
7

迟到的答案,但根据对已接受答案的评论,似乎有些混乱。

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

XML:

<Preference        
    android:key="username_pref"
    android:title="Username" >
</Preference>

这将使您的偏好可点击但不可编辑。

于 2017-11-23T16:24:21.560 回答
0

@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)

见下面的结果截图 应用版本偏好截图

于 2020-11-16T13:59:10.537 回答
0

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

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

或者,使用以下 Java 代码:

EditTextPreference pref = (EditTextPreference)findPreference("yourkey");
pref.setEnabled(false);
pref.setShouldDisableView(false);
于 2020-12-12T03:40:32.520 回答