Android Button.getWidth()为0的问题
2024-10-07 19:46:29
View在onCreate的时候,没有渲染组件,所以获取到的宽度和高度为0,
需要添加一个观察者,在layout渲染后再去取宽高。代码如下:
private Button btn_icon; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_button); btn_icon = findViewById(R.id.btn_icon);
ViewTreeObserver vto = btn_icon.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
btn_icon.getViewTreeObserver().removeGlobalOnLayoutListener(this); LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) btn_icon.getLayoutParams();
Context ctx = btn_icon.getContext();
int marginLen = (DisplayUtil.getScreenWidth(ctx) - btn_icon.getWidth()) / 2;
lp.setMargins(marginLen, 20, marginLen, 20);
btn_icon.setLayoutParams(lp); }
});
}
参考:https://blog.csdn.net/zheng5229875/article/details/39314159
最新文章
- UVA 1151 买还是建(最小生成树)
- 【C#】Excel做的数据表、SQLParameter代码生成工具
- easymock+junit+spring学习·
- code of C/C++ (1)
- C#类的继承
- 使用ImageLoader实现图片异步加载
- MemoryStream类
- 在iPhoneApp中加载PDF
- 【Swift】—— 中国课程
- 比较Java中几个常用集合添加元素的效率
- monkeyrunner_获取apk的包名和activity名
- YARN详解
- Visual Studio Team Services Demo Generator简介
- 好看的alert弹出框sweetalert
- ";美女相册";的 js 实现代码
- robotium之webview元素处理
- Struts2框架之类型转换 --Struts2框架
- ext2文件系统 - mke2fs
- ESET免费申请
- oracle中的术语