alertdialog 设置最大高度

设置最大高度,有很多方法,我个人比较喜欢的是下面这种方式 ,这里的view即添加到

  view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                int height = view.getHeight();
                int maxHeight = DensityUtils.dpToPx(mHomeActivity, 200);
                if(height> maxHeight){
            //这里也可采用现获取layoutParams view.setLayoutParams(
new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,maxHeight)); //这里一定是frameLayout,不然会转换异常,由此可见alertdialog底层是frameLayout } } });

 

2.在dialog中含有recyclerView或者listview,用的relativeLayout,结果listview下面会被截取掉,这里应该这么处理

 view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                int height = mDeviceList.getHeight();
                int maxHeight = DensityUtils.dpToPx(mHomeActivity, 200);

                if(height> maxHeight){
                    //必须首先获取控件的layoutParams,然后再更改,new一个不行
                    ViewGroup.LayoutParams layoutParams = mDeviceList.getLayoutParams();
                    layoutParams.height = maxHeight;
                    mDeviceList.setLayoutParams(layoutParams);
                }



            }
        });

这种方法会导致recyclerview的点击事件,不能及时响应。原因暂时不明

posted @ 2018-01-04 13:33  贺长寿  阅读(986)  评论(0编辑  收藏  举报