Android 如何设置“ImageView”和#x27;s的高度与之匹配';设置“布局重量”时的宽度?

Android 如何设置“ImageView”和#x27;s的高度与之匹配';设置“布局重量”时的宽度?,android,gridview,imageview,height,width,Android,Gridview,Imageview,Height,Width,交易如下: 我有一个GridView和android:numColumns=“2”。GridView中的项目是带有android:layout\u weight=“1”的imageview,因此它们是屏幕宽度的一半。问题在于height属性,它应该等于宽度。我试着玩scaleype,但至今没有成功。 如何设置GridView元素的宽度以填充屏幕的一半,并将其高度设置为等于宽度 要将ImageView设置为屏幕的一半,需要将以下内容添加到ImageView的XML中: <ImageView

交易如下: 我有一个
GridView
android:numColumns=“2”
GridView
中的项目是带有
android:layout\u weight=“1”
imageview
,因此它们是屏幕宽度的一半。问题在于
height
属性,它应该等于宽度。我试着玩
scaleype
,但至今没有成功。
如何设置
GridView
元素的宽度以填充屏幕的一半,并将其高度设置为等于宽度

要将
ImageView
设置为屏幕的一半,需要将以下内容添加到
ImageView
的XML中:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"/>

希望这有帮助

必须以编程方式获取ImageViews宽度,然后设置高度

但是如果您只使用
img.getWidth();例如,在
OnCreate()
中,它将返回
0
,因为它尚未绘制

因此,您必须在
OnCreate()
中执行类似的操作:


这将在绘制图像视图后获得图像视图的宽度,并将其高度设置为该宽度。

int getView方法甚至getMeasuredWidth()返回零。您找到答案了吗?如果我没记错,我在网格视图中显示了方形图像,因此将其高度和宽度设置为包裹内容就足够了。否则,您可以查看以下内容:
int measuredImageWidth = mImageView.getMeasuredWidth();
mImageView.getLayoutParams().height = measuredImageWidth;
ImageView img = (ImageView) findViewById(R.id.img); 
ViewTreeObserver vto = img.getViewTreeObserver();
         vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
             public boolean onPreDraw() {
                 int x;
                 img.getViewTreeObserver().removeOnPreDrawListener(this);
                 x = img.getMeasuredWidth();
                 img.setLayoutParams(new LinearLayout.LayoutParams(x,x));
                 return true;
             }
         });