解决Dialog对话框在输入法弹出时被遮挡的问题

今天在做项目时遇到一个问题。程序中有一个评论的对话框,对话框中包含了EditText和ImageButton,当点击EditText弹出输入法时,输入法框会遮挡Dialog中的ImageButton。在查阅了一些资料后,普遍的做法都是在Dialog中加入ScrollView。但是这就需要Dialog能够在弹出输入法的时候能够被resize(压缩)。在Android中,可以通过android:windowInputMode="adjustResize"来使得Activity能够被压缩。可是Dialog是不能通过该方法来实现。

要使得Dialog能够被压缩,可以在代码中进行如下设置:


Dialog mMainWindow = new Dialog(this, R.style.dialog_full_screen);
mMainWindow.setContentView(mMainView);        
mMainWindow.setCancelable(true);
mMainWindow.show();
Window dialogWin = mMainWindow.getWindow();
WindowManager.LayoutParams lp = dialogWin.getAttributes();
/**
Dialog的width和height默认值为WRAP_CONTENT,正是因为如此,当屏幕中有足够的空间时,Dialog是不会被压缩的
但是设置width和height为MATCH_PARENT的代价是无法设置gravity的值,这就无法调整Dialog中内容的位置,Dialog的内容会显示在屏幕左上角位置不过可以通过Padding来调节Dialog内容的位置。
 **/
lp.width = LayoutParams.MATCH_PARENT;	
lp.height = LayoutParams.MATCH_PARENT;
dialogWin.setAttributes(lp);

通过以上方法,就会使得Dialog能够在输入法弹出时被Resize(需设置Dialog的Activity的android:windowInputMode="adjustResize",并且Dialog中的内容嵌套在ScrollView中)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值