zoukankan      html  css  js  c++  java
  • Android Button.getWidth()为0的问题

    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

  • 相关阅读:
    任务安排(代价提前付)
    10 01模拟赛订正
    哈希hash
    初学期望
    P1251 递推专练3
    P1229-神秘岛
    P1228-重叠的图像
    白银莲花池
    求强连通分量
    割边
  • 原文地址:https://www.cnblogs.com/rsty/p/8920569.html
Copyright © 2011-2022 走看看