布局参数对requestLayout的调用时机?

qianlima210210 2018-10-24 08:00:35

各位老师:Android代码布局时,为什么红色部分在设置宽度后不调用requestLayout(),二绿色部分必须调用呢?


Button button = new Button(this);
button.setText("Go");
layout.addView(button);

RelativeLayout.LayoutParams btnLayoutParams = (RelativeLayout.LayoutParams)button.getLayoutParams();

btnLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
btnLayoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT;


btnLayoutParams.addRule(RelativeLayout.BELOW, 14);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

RelativeLayout.LayoutParams btnLayoutParams = (RelativeLayout.LayoutParams)v.getLayoutParams();
btnLayoutParams.width = RelativeLayout.LayoutParams.WRAP_CONTENT;

//更新布局
v.requestLayout();
}
});
...全文
297 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklwan 2018-10-25
  • 打赏
  • 举报
回复
参考https://blog.csdn.net/cauchyweierstrass/article/details/41445769 可以用setLayoutParams,也可以用requestLayout,否则设置了宽高却并没有重新测量绘制,布局并不会立即改变大小。
qianlima210210 2018-10-25
  • 打赏
  • 举报
回复
楼上真理楼上真理楼上真理

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧