1

我有一个带有 EditTextPreference 的首选项屏幕。如何设置提示

要么在xml中

android:hint

或在代码中

setHint(int), setHint(CharSequence hint)

在 EditTextPreference 上就像在 EditText 字段上一样?我认为它就像在 EditText 上一样,但我没有找到这样的东西。谢谢。

4

6 回答 6

7

在 XML 中为 EditTextPreference 设置提示与为 EditText 设置提示完全相同:

android:hint="This is my hint"

这将传递到对话框中的 EditText。

此行为在此处得到确认,其中显示“它是 DialogPreference 的子类,并在对话框中显示 EditText。此 EditText 可以通过 getEditText() 以编程方式修改,也可以通过 XML 通过在 EditTextPreference 上设置任何 EditText 属性来修改。”

于 2012-03-13T20:03:38.930 回答
4

这会更好,因为接受的答案不会在 edittext 上设置提示,但会将文本设置为 EditText(小差异万岁)。

要真正设置提示,请使用以下代码:

YourEditTextPreference.getEditText().setHint(R.string.some_hint);

您也可以考虑添加摘要,这样首选项就不会显示为空的摘要

于 2014-12-30T10:44:57.830 回答
3

如果您使用的是 AndroidX 首选项库,您可以OnBindEditTextListener在您的PreferenceFragmentCompat:

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    PreferenceManager manager = getPreferenceManager();
    EditTextPreference textPref = manager.findPreference("myTextPreference");
    textPref.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
        @Override
        public void onBindEditText(@NonNull EditText editText) {
            editText.setHint(R.string.hint);
        }
    });
}

当输入字段为空时,提示应按预期显示。

于 2019-12-13T16:02:06.640 回答
2

Kotlin 版本(AndroidX 偏好库)

val editTextPref = findPreference<Preference>("prefKey") as EditTextPreference
editTextPref.setOnBindEditTextListener {
    it.hint = "My hint"
}

适用于 Android 10(API 级别 29)的模拟器。

同时,xml中指定的提示不起作用

<EditTextPreference
                android:key="prefKey"
                android:title="Title"
                android:hint="My hint"/>
于 2020-08-05T16:44:29.783 回答
0

用于android:summary简要描述您的偏好。

您也可以使用动态设置它setSummary(CharSequence summary)

编辑:为了给出一个“提示”,你可以使用android:defaultValue.

于 2011-09-20T08:26:12.313 回答
-1

设置“提示”的方法是使用https://developer.android.com/guide/topics/ui/settings/customize-your-settings中描述的摘要提供程序

这个想法是在值为 null 或为空时打印默认值/提示 - 否则,只需打印出首选项值

val dobPreference: EditTextPreference? = findPreference("key_dob")

dobPreference?.summaryProvider = SummaryProvider<EditTextPreference> { pref ->

    if (pref.text.isNullOrBlank()) {
        "e.g. Enter your DOB in DDMMYYYY format" // the hint if pref is empty
    } else {
        pref.text // your preference value if it is not empty.
    }
}
于 2020-06-18T07:00:11.627 回答