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

  • 相关阅读:
    animation关键帧动画语法
    border-image
    CSS3之box-shadow
    border-radius编程练习1-3
    CSS之border-radius
    CSS3之径向渐变
    CSS3之线性渐变(linear gradients)
    CSS之background——背景与渐变练习题
    background-image
    background-color
  • 原文地址:https://www.cnblogs.com/rsty/p/8920569.html
Copyright © 2011-2022 走看看