我有一些正方形图像,并希望将它们放在符合屏幕宽度的3行中,同时保留图像的纵横比。这可以很容易地完成。但是,我还想将每个ImageView放入一个CardView(方卡)中,但是当我这样做时会出现问题。 这张卡真的很长,而不是图像的高度。我不确定这里出了什么问题。 下面是我将第一个ImageView放入CardView之前的代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.CardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:src="@drawable/square1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_dark"
android:adjustViewBounds="true" />
</android.support.v7.widget.CardView>
<ImageView
android:src="@drawable/square2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/main"
android:layout_weight="1"
android:adjustViewBounds="true"/>
<ImageView
android:src="@drawable/square3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/main_light"
android:layout_weight="1"
android:adjustViewBounds="true"/>
</LinearLayout>
答案 0 :(得分:5)
由于您想要每行三个视图,无论行的宽度如何,并且您希望它们都是正方形,您可以使用自定义CardView,并覆盖onMeasure()以强制1:1宽高比
<script>
然后使用:
package com.example.view;
public class SquareCardView extends CardView {
public SquareCardView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int ignoredHeightMeasureSpec) {
int newHeightMeasureSpec = widthMeasureSpec;
super.onMeasure(widthMeasureSpec, newHeightMeasureSpec);
}
}
不是说你应该,但你可以。