我正在制作一个应用程序,我在我的布局中添加了一个EditText。
我想要实现的是,当选择EditText时,应打开一个对话框,其中包含一些常规文本和OK
按钮。我可以使用哪种方法来实现这一目标?
答案 0 :(得分:4)
你必须尝试这样的事情
searchtext.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
showDialog();
}
}
};
这里是showDialog()代码
private void showDialog()
{
final AlertDialog.Builder Main_Dialog = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
input.setPadding(10, 10, 10, 10);
input.setText(ipAddress);
Main_Dialog.setView(input);
Main_Dialog.setTitle("Enter IP Address:");
Main_Dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
//Do whatever
}
});
Main_Dialog.show();
}
答案 1 :(得分:2)
如果我正确地阅读您的困境,您需要为EditText设置OnFocusChangeListener。类似于以下内容。
EditText e = new EditText(this);
e.setOnFocusChangeListener
(
new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (v.hasFocus()) {
showDialog(COOL_DIALOG);
}
}
}
);
注意,这似乎是一个有点奇怪的用户交互。为什么不让他们使用EditText来制作它?如果你真的想这样做,我建议使用常规TextView或Button,并使用点击处理程序弹出对话框。这将为用户创建更“预期”的交互。
答案 2 :(得分:1)
您的意思是想要在EditView获得焦点时显示对话框?我认为重写View.onFocusChanged()将是最佳选择。如果要跟踪EditText的详细输入,请实现TextWatcher并使用TextView.addTextChangedListener()将其添加到EditText实例。