【问题标题】:setGravity after setMeasuredDimension is not worksetMeasuredDimension 后的 setGravity 不起作用
【发布时间】:2016-08-01 13:54:48
【问题描述】:

我创建了课程customTextView extent TextView 我将textAlignment 设置为居中。 在onMeasure 中我更改了textview 的宽度。

在 textview 左对齐更改之后 我用this.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); 但它没有变为中心

【问题讨论】:

    标签: android textview gravity onmeasure


    【解决方案1】:

    在您的课程中添加以下代码。

    Runnable runnable = new Runnable() {
                public void run() {
                  view.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                }
       };
    
    Handler handler = new Handler();
    handler.postDelayed(runnable,1000);
    

    【讨论】:

      【解决方案2】:

      喜欢这样吗?

      @Override
          protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
              super.onMeasure(widthMeasureSpec, heightMeasureSpec);
      
              ImageView imageView = (ImageView)((Activity) context).findViewById(R.id.list_r);
              int imageViewHeight = imageView.getMeasuredWidth();
      
              int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
              int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
      
              int final_width = parentWidth - 2*imageViewHeight;
              this.setMeasuredDimension(final_width, parentHeight);
      
              Runnable runnable = new Runnable() {
                  public void run() {
                      view.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                  }
              };
      
              Handler handler = new Handler();
              handler.postDelayed(runnable,1000);
          }
      

      【讨论】:

      • 它只适用于第一页,但当滚动页面时,不起作用
      • 我想在显示屏幕之前更改它,但此代码在显示活动后更改它
      猜你喜欢
      • 2013-01-04
      • 2014-07-19
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      相关资源
      最近更新 更多