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;
}
});