android编辑首选项屏幕中的文本
我可以在首选项屏幕中放置EditText元素吗 我想这样做,以便通过键入快速搜索大型ListPreference,但不想保存搜索框的内容?这是否可能,或者首选项屏幕上不允许使用标准布局控件android编辑首选项屏幕中的文本,android,preferences,Android,Preferences,我可以在首选项屏幕中放置EditText元素吗 我想这样做,以便通过键入快速搜索大型ListPreference,但不想保存搜索框的内容?这是否可能,或者首选项屏幕上不允许使用标准布局控件 目标是提供一种选择时区并将其保存为首选项的方法。仅使用ListViewPreference是不够的,因为必须滚动大量时区。因此,我想提供一个“hypersearch”类型的输入框,用户可以在其中键入时区或时区的一部分,以缩小列表框的选择范围。您可以做的只是制作一个标准首选项,显示一个包含EditText的对话
目标是提供一种选择时区并将其保存为首选项的方法。仅使用ListViewPreference是不够的,因为必须滚动大量时区。因此,我想提供一个“hypersearch”类型的输入框,用户可以在其中键入时区或时区的一部分,以缩小列表框的选择范围。您可以做的只是制作一个标准首选项,显示一个包含EditText的对话框,并添加一个ContextChangeListener:
searchET.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
至于显示搜索结果,我不知道。我以前从未具体尝试过这些方法,但它似乎适合您,您必须找出执行搜索本身所需的任何代码,但这将添加初始功能
编辑:
在XML中,我指的是标准首选项:
<Preference
android:title="Time Zone"
android:summary="Choose your time zone"
android:key="timeZone"/>
不过,我认为实际上可以使用EditTextPreference,然后将TextChangedListner添加到EditTextPreference,因为我认为它继承了EditText的所有内容。不过,我并不积极 从谷歌的快速搜索来看,没有简单的解决方案。不过,您可能希望了解一些不错的功能,称为[快速搜索框]()和。谢谢。当你说标准首选项时,你的意思是仅仅是一个普通的活动/布局,并且做存储自己的首选项,而不是从PreferenceActivity继承。这就是我一直计划做的,除非有更好的。“肯定有很多人都有这个问题。”我编辑了我的答案。当然,你也可以照你说的做,然后做一个有编辑文本的活动。我的解决方案需要打开一个对话框,但我个人觉得这比edittext更干净哦,不,你不能把edittext放在preferenceScreen中。对不起,我没有回答太多,所以在我的回答中,我只是给了你一个替代的解决方案
Preference timeZone = (Preference)findPreference("timeZone");
timeZone.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
showDialog(1);
return false;
}
});
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
final EditText searchET = new EditText(this);
//do the searchET.addTextChangedListener here
return new AlertDialog.Builder(this)
.setTitle("Choose Time Zone")
.setView(showAppString)
.setPositiveButton(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//save the time zone to sharedPreferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreference(this);
SharedPreferences.Editor editor = pref.edit();
editor.putString("TIME_ZONE", TZ.toString());
}//closes the onClick
})//closes the onclicklistener
.show();
}//closes the switch
}//closes the oncreatedialog