1

我想知道如何真正测量 ImageView 的一侧以使其成为正方形。

例如:

我有这个 ImageView

<ImageView
 android:id="@+id/imageView1"
 android:layout_width="fill_parent"
 android:layout_height="0dp"
 android:layout_weight="50"
 android:background="@drawable/image"/>

我想要做的只是获得真正的高度测量(在 DP 或 PX 中)以使用以下代码制作一个正方形:

ImageView imageView1 = (ImageView) this.findViewById(R.id.imageView1);
imageView1.getLayoutParams().width = imageView1.getHeight();

但是,如果我使用这些代码之一,我总是得到“0”:

   imageView1.getHeight();
   imageView1.getLayoutParams().height;
   imageView1.getMeasuredHeight();

因为我将 layout_height "0dp" 设置为 50% layout_weight。

有办法让 ImageView 变成正方形吗?

很多谢谢...

4

2 回答 2

0

尝试这个:

 public class Something extends Activity {
   ImageView imageView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_something);
      imageView = (ImageView) findViewById(R.id.yourImage);
      getDimensions();
  }

    private void getDimensions() {
      imageView.measure(imageView.getMeasuredWidth(),
      imageView.getMeasuredHeight());
      int Width = getMeasuredWidth();
      int Height = getMeasuredHeight();
      Toast.makeText(this, "width: " + Width + " height: " + Height,
            Toast.LENGTH_SHORT).show();
  }

}

它适用于我,使用 api 4 / 17,目标 api 10。结果以 px 为单位。

于 2013-01-12T02:58:43.030 回答
0

用这个

imageView.measure(imageView.getMeasuredWidth(), imageView.getMeasuredHeight());
imageView.getHeight();
imageView.getWidth();
于 2012-07-13T07:37:54.487 回答