我有一个带有EditTextPreference的首选项屏幕。 如何设置提示
或者像xml一样
android:hint
或代码
setHint(int), setHint(CharSequence hint)
在EditText字段上的EditTextPreference上的? 我认为它就像在EditText上,但我没有找到这样的东西。 感谢。
答案 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.
}
}