Android 6.0新控件 BottomSheetDialog的使用及遇到的问题 | 底部对话框中输入框被系统键盘遮挡住一部分

Android Support Library 23.2里的 Design Support Library新加了一个Bottom Sheets控件,Bottom Sheets顾名思义就是底部操作控件,用于在屏幕底部创建一个可滑动关闭的视图,可以替代对话框和菜单。其中包含BottomSheets、BottomSheetDialog和BottomSheetDialogFragment三种可以使用。其中应用较多的控件是BottomSheetDialog。

BottomSheetDialog应该是最实用的控件,也是使用率非常高的控件。它可以替代大多数网格显示和列表展示的dialog和popupwindow,默认宽度撑满,并且在BottomSheetDialog 区域中向下滑动也让对话框消失。

最近根据产品需要,开发一个新闻页面,页面底部有一个评论功能,于是用上Android 6.0新控件 BottomSheetDialog,但是在点击弹出带有EditTtext输入框的dialog发现,系统键盘遮挡了一部分dialog页面,看起来很不协调,体验很不好,如下图:

Android 6.0新控件 BottomSheetDialog的使用及遇到的问题 | 底部对话框中输入框被系统键盘遮挡住一部分_第1张图片

解决思路:在创建的bottomSheetDialog设置一个style即可,代码如下


修改后的效果如下:

Android 6.0新控件 BottomSheetDialog的使用及遇到的问题 | 底部对话框中输入框被系统键盘遮挡住一部分_第2张图片

ps:因为该控件是Android Support Library 23.2里的 Design Support Library新加了一个Bottom Sheets控件,所以在设置style时应该放在values-v21/style中,否则会报错。

具体代码如下:

if (dialog == null) {
    dialog = new BottomSheetDialog(mContext ,R.style.BottomSheetEdit);//要加上这个,否则,键盘会覆盖一部分弹窗。
    View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_bottom_comment, null);
    dialog.setContentView(view);
    editContent = (EditText) view.findViewById(R.id.edit_content);
    tvSend = (TextView) view.findViewById(R.id.tv_send);
    tvSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            addComment();
        }
    });
}
dialog.show();

dialog_bottom_comment.xml


    
        
        

 

你可能感兴趣的:(android)