Android EdittextPreference提示(android:提示)

时间:2011-09-20 08:20:24

标签: android android-edittext preference hint preferencescreen

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

或者像xml一样

android:hint

或代码

setHint(int), setHint(CharSequence hint)
在EditText字段上的EditTextPreference上的

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

6 个答案:

答案 0 :(得分:7)

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

android:hint="This is my hint"

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

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

答案 1 :(得分:3)

这样做会更好,因为接受的答案不会在edittext上设置提示,但会将文本设置为 EditText(小不同的长寿)。

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

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

您还可以考虑添加摘要,以便不会显示带有空摘要的首选项

答案 2 :(得分:1)

使用android:summary简要说明您的偏好。

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

编辑:如果提供'提示',您可以使用android:defaultValue

答案 3 :(得分:1)

Kotlin版本(AndroidX首选项库)

Counting objects: 100% (35/35), done.
Delta compression using up to 8 threads
Compressing objects: 100% (31/31), done.
Writing objects: 100% (35/35), 3.89 KiB | 796.00 KiB/s, done.
Total 35 (delta 11), reused 0 (delta 0), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/python.tgz
remote:        More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to hellobotpy.
remote:
To https://git.heroku.com/hellobotpy.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/hellobotpy.git'

可在具有Android 10(API级别29)的模拟器中使用。

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

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

答案 4 :(得分:0)

如果您使用的是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);
        }
    });
}

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

答案 5 :(得分:-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.
    }
}