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

最新文章

  1. UVA 1151 买还是建(最小生成树)
  2. 【C#】Excel做的数据表、SQLParameter代码生成工具
  3. easymock+junit+spring学习·
  4. code of C/C++ (1)
  5. C#类的继承
  6. 使用ImageLoader实现图片异步加载
  7. MemoryStream类
  8. 在iPhoneApp中加载PDF
  9. 【Swift】—— 中国课程
  10. 比较Java中几个常用集合添加元素的效率
  11. monkeyrunner_获取apk的包名和activity名
  12. YARN详解
  13. Visual Studio Team Services Demo Generator简介
  14. 好看的alert弹出框sweetalert
  15. "美女相册"的 js 实现代码
  16. robotium之webview元素处理
  17. Struts2框架之类型转换 --Struts2框架
  18. ext2文件系统 - mke2fs
  19. ESET免费申请
  20. oracle中的术语

热门文章

  1. IDEA上传项目到SVN
  2. 本地调试H5页面
  3. Java oop 第13章_多线程
  4. layerui ios不适应问题
  5. 链表list
  6. Aria2 Centos8 安装配置
  7. FastStone Capture 文件名设置小记录
  8. thinkphp 模块部署
  9. 暴力模拟——cf988E
  10. 关于windows下远程连接Linux服务器的方法(CentOs)