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

最近的需求如下图所示:


退款原因是动态从后台获取,“其他原因”是本来就存在的不用从后台获取,原因只可单选。只有选择其他原因时,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就只能这样改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值