AlertDialog实现自定义布局以及解决EditText无法弹出软键盘或者软键盘弹出错误问题

来源:互联网 发布:大数据时代监狱管理 编辑:程序博客网 时间:2024/04/29 05:21

最近的需求如下图所示:


退款原因是动态从后台获取,“其他原因”是本来就存在的不用从后台获取,原因只可单选。只有选择其他原因时,EideText才可以编辑。这里我就按我完成的步骤简单叙述一下会附重点代码。

第一步:先写好布局备用。退款原因就用ListView了,因为原因是由后台动态控制的。其他原因并不是从后台获得因此我并没有添加到ListView中,大家也可以加进去来做。

第二步:在需要弹出对话框的地方来添加如下代码


这一步很重要的是下面这样一句

alertDialog.setView(this.getLayoutInflater().inflate(R.layout.refund_dialog, null));
如果去掉这句话软键盘将不会弹出来,原因我还没有深究。开始的时候设置EditText不可编辑就是一下两句

et.setFocusable(false);et.setFocusableInTouchMode(false);

第三步:至于单选之前文章中有说过很简单,这里就不赘述了,EditText可编辑的将false改为true即可。


总结:

在解决这个问题是也百度到很多方法其中有一种是加了如下代码,软键盘是弹出来了,可是在对话框的下面。

Timer timer = new Timer();
                   timer.schedule(new TimerTask() {


                    @Override
                    public void run() {
                     ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
                       .toggleSoftInput(0,
                         InputMethodManager.HIDE_NOT_ALWAYS);
                    }
                   }, 100);

还有就是可以将AlertDialog改为Dialog这个也可以解决问题,但是不想使用Dialog就只能这样改了。

0 0
原创粉丝点击