DialogFragment 中的 EditText:如何限制为单行并在键盘上显示 "Search" 图标?
EditText in DialogFragment: How to limit to single line and show "Search" icon at the keyboard?
我已经准备好 a simple test project at GitHub 我的问题:
在 Android 的文字游戏中,我想为用户提供一种检查游戏词典中是否存在某个单词的可能性 - 通过显示 DialogFragment
和单个 EditText
.
这是自定义 FindWordDialogFragment.java:
中的代码摘录
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final EditText editText = new EditText(getContext());
editText.setMaxLines(1);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v,
int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String word = editText.getText().toString();
mListener.findWord(word);
dismiss();
return true;
}
return false;
}
});
return new AlertDialog.Builder(getContext())
.setIcon(R.mipmap.ic_launcher)
.setTitle(R.string.find_word_title)
.setView(editText, 16, 16, 16, 16)
.setPositiveButton(R.string.find_word_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String word = editText.getText().toString();
mListener.findWord(word);
}
}
)
.setNegativeButton(R.string.find_word_cancel, null)
.create();
}
不幸的是,有2个问题(在上面的截图中用红色箭头标记):
EditText
中还有几行文字
- 而且键盘上没有显示"Search"图标
有人可以帮忙吗?
我倾向于发现 setSingleLine(true)
比 setMaxLines(1)
更一致。
要进行搜索,请尝试添加 editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH)
。您的代码在收到搜索事件时处理搜索事件,但这并没有告诉它首先发送它。
我已经准备好 a simple test project at GitHub 我的问题:
在 Android 的文字游戏中,我想为用户提供一种检查游戏词典中是否存在某个单词的可能性 - 通过显示 DialogFragment
和单个 EditText
.
这是自定义 FindWordDialogFragment.java:
中的代码摘录@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final EditText editText = new EditText(getContext());
editText.setMaxLines(1);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v,
int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String word = editText.getText().toString();
mListener.findWord(word);
dismiss();
return true;
}
return false;
}
});
return new AlertDialog.Builder(getContext())
.setIcon(R.mipmap.ic_launcher)
.setTitle(R.string.find_word_title)
.setView(editText, 16, 16, 16, 16)
.setPositiveButton(R.string.find_word_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String word = editText.getText().toString();
mListener.findWord(word);
}
}
)
.setNegativeButton(R.string.find_word_cancel, null)
.create();
}
不幸的是,有2个问题(在上面的截图中用红色箭头标记):
EditText
中还有几行文字- 而且键盘上没有显示"Search"图标
有人可以帮忙吗?
我倾向于发现 setSingleLine(true)
比 setMaxLines(1)
更一致。
要进行搜索,请尝试添加 editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH)
。您的代码在收到搜索事件时处理搜索事件,但这并没有告诉它首先发送它。