我想让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>
答案 0 :(得分:12)
您可以以编程方式或.xml方式执行此操作。
<强> XML:强>
<EditTextPreference
android:enabled="false" >
</EditTextPreference>
<强>编程:强>
getPreferenceScreen().findPreference("yourpref").setEnabled(false);
来自Android文档:
“如果已停用,则偏好将无法处理点击次数。”
答案 1 :(得分:4)
迟到的答案但是根据对已接受答案的评论,似乎有些混乱。
我不同意禁用始终是不可编辑设置的正确选择。例如,在Android设置中:系统 - &gt;关于手机 - &gt;显示电话的状态信息,这些信息位于不可编辑的设置中,更像是用户可能需要的重要信息。由于它们永远不会从设置页面进行编辑,因此应该显示为正常的 Prefrence ,而不是显示为已停用的 EditTextPreference 。
<强> XML:强>
<Preference
android:key="username_pref"
android:title="Username" >
</Preference>
这将使您可以点击,但不可编辑。
答案 2 :(得分: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)
答案 3 :(得分:0)
要禁用点击并保持首选项不灰暗,请使用以下XML:
<EditTextPreference
android:enabled="false"
android:shouldDisableView="true" />
或者,使用以下Java代码:
EditTextPreference pref = (EditTextPreference)findPreference("yourkey");
pref.setEnabled(false);
pref.setShouldDisableView(false);