dialog 带edittext android,android – 带有EditText的AlertDialog的更好解决方案

我想要一个带有EditText字段的AlertDialog来接受输入.这本身就很简单.但是,有一些“显而易见”的功能,我想从这个请求中得到影响.我会一个接一个地拿它们.我正在寻找对这些事情有更简单解决方案的人.我猜测解决方案是,“编写自己的自定义对话框,你懒惰的屁股.”

带有EditText的AlertDialog

final EditText input = new EditText(context);

final AlertDialog dlg = new AlertDialog.Builder(this).

setTitle("Title").

setView(input).

setCancelable(false).

setPositiveButton(android.R.string.ok, new OnClickListener()

{

@Override

public void onClick(final DialogInterface dialog, final int which)

{

/* Handle ok clicked */

dialog.dismiss();

}

}).

setNegativeButton(android.R.string.cancel, new OnClickListener()

{

@Override

public void onClick(final DialogInterface dialog, final int which)

{

/* Handle cancel clicked */

dialog.dismiss();

}

}).create();

dlg.show();

是的,很棒.如果输入字段立即聚焦(并显示键盘),那肯定会很好,对吗?

具有焦点EditText的AlertDialog

以下代码将在create()之后和dlg.show()之前

/** This requires API Level 8 or greater. */

dlg.setOnShowListener(new OnShowListener()

{

@Override

public void onShow(final DialogInterface dialog)

{

input.requestFocus();

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(input, 0);

}

});

干得好……我猜.现在我有这个专注的输入,如果它尊重输入IME选项会很好…

AlertDialog,具有自定义IME选项的焦点EditText

input.setImeOptions(EditorInfo.IME_ACTION_DONE);

input.setOnEditorActionListener(new OnEditorActionListener()

{

@Override

public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event)

{

/** Same code here that goes in the dialog.setPositiveButton OnClickListener */

dlg.dismiss();

return true;

}

});

现在这真的不是一个很好的解决方案(重复代码),但它的工作原理……

人们有更好的方法来解决这个问题,或者在对话框中询问用户提供一小段信息真的很少见,或者我只是一个喝酒者,应该去写我自己的对话框?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值