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