//取控件当前的布局参数
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams()
//设置宽度值
params.width = dip2px(MainActivity.this, width)
//设置高度值
params.height = dip2px(MainActivity.this, height)
//使设置好的布局参数应用到控件
imageView.setLayoutParams(params)
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
高度除了可以设置成以上固定的值,也可以设置成wrap_content或match_content
ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT
1
2
1
2
在这里插入图片描述
xml
Dialog 的自定义布局的根布局的宽度是写固定的,显示的时候宽度和高度不是对应的固定值。
根布局外面又添加了一层 FrameLayout,设置其宽高均为 wrap_content 来包裹以前的布局。
这个时候猜测是否因为添加自定义视图的时候,布局参数被改写了,然后开始查看源码,最终发现确实是这样的。
在下面的源码分析中,最终发现也是用了 mWindow.setContentView(mAlertDialogLayout) 将 R.layout.alert_dialog.xml 的默认布局添加到 PhoneWindow, 和Activity一样的。
关键的地方看一下 setupCustomContent() 这个方法,在添加自定义视图的时候布局参数设置为 MATCH_PARENT 了,所以我们设置固定大小是没有作用的,要套一层父布局解决这个问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)