设置自定义Dialog的大小(补充<自定义Dialog(二)>)

    在做自定义Dialog(二)的例子时,遇到如下问题:

  1、Dialog的样式设为R.style.NoTitleDialogTheme时,效果可以出来,但搜索框的大小控制不了,本来设了1200的长度,但只显示了大约一半;

  2、Dialog的样式设为R.style.CustomSearchTheme时,搜索框可以弹出,大小也控制住了,但搜索框外的背景色为完全透明,得在布局文件中加了透明度,才能显示为半透明,并且点击页面空白区域,搜索框消失不了。

<style name="CustomSearchTheme" parent="android:TextAppearance">
   网上查询资料有两种方法可以控制Dialog的大小,一种是在dialog.show()之后,加上设置高度和宽度的代码,但这种方式有缺点:搜索框弹出后,软键盘没有跟着弹出来,必须点击一下才能出来。
  设置高度和宽度的代码是:
if (i == R.id.book_quer) {//搜索按钮
    Dialog dialog = DialogHelper.QueryDialog(CookbookHomeActivity.this, new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText editText=(EditText) view.getTag();
            String keyword=editText.getText().toString().trim();
            searchStr = keyword;
            Log.e(TAG,"获取到的值===》"+editText.getText().toString());
            //startActivity(new Intent(CookbookHomeActivity.this, CookbooknotActivity.class));
            DialogUtil.showRoundProcessDialog(mContext,"数据加载中……",false);
            QueryBody dataBody = new QueryBody(keyword,"",1,10);
            BjDataBody body = BJServerBodyUtils.getBjDataBody(dataBody,true);
            QueryCookPresenter queryCookPresenter=new QueryCookPresenter(CookbookHomeActivity.this);
            queryCookPresenter.getBookQueryList(HttpAddr.CookBook_URL,body);

        }
    });
    dialog.show();

    Window window = dialog.getWindow();
    WindowManager.LayoutParams lp = window.getAttributes();
    lp.gravity = Gravity.CENTER;
    lp.width = 1200;//宽高可设置具体大小
    lp.height = 66;
    dialog.getWindow().setAttributes(lp);

}
注意:lp.width和lp.height不能设置为match_parent,虽然设为match_parent之后,显示效果是对的,但点击搜索框之外,搜索框不能消失。
另一种方法比较好用:
    是在定义Dialog时,就直接设置控件的宽高:(不是在布局文件中,是在代码中)
public  static Dialog QueryDialog(Context context, final View.OnClickListener onClickListener){
                final Dialog dialog = new Dialog(context,R.style.NoTitleDialogTheme);
                LayoutInflater inflater = LayoutInflater.from(context);
                View view = inflater.inflate(R.layout.dialog_query, null);
                ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(1200,66);
                dialog.setContentView(view,params);
                final EditText et_quer=(EditText)view.findViewById(R.id.et_quer);
                ImageView tv_quer=(ImageView)view.findViewById(R.id.tv_quer);
                tv_quer.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if(onClickListener!=null){
                            view.setTag(et_quer);
                            onClickListener.onClick(view);
                            dialog.dismiss();
                        }
                    }
                });
//                dialog.setView(view, 0, 0, 0, 0);

                return dialog;
            }
红色字体部分是关键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值