1. ホーム
  2. android

ImageViewは正方形で動的な幅を持つ?

2023-08-29 04:39:38

質問

GridViewの中にImageViewがあります。私は各行ごとにそれらの3を持っています。私はWRAP_CONTENTとscaleType = CENTER_CROPで幅を正しく設定することができますが、私はImageViewのサイズを正方形に設定する方法が分かりません。今までやったことは以下の通りで、高さ以外は大丈夫そうですが、"static"になっています。

imageView = new ImageView(context);     
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT, 300));

アダプタの中でやってます。

どのように解決するのですか?

最良の方法は、サブクラス ImageView を自分自身でサブクラス化し、メジャーパスをオーバーライドすることです。

public class SquareImageView  extends ImageView {

  ...

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    int width = getMeasuredWidth();
    setMeasuredDimension(width, width);
  }

  ...

}