use*_*506 2 xml android imageview android-imageview android-cardview
我有一些正方形图像,并希望将它们放在符合屏幕宽度的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>Run Code Online (Sandbox Code Playgroud)
由于您希望每行有三个视图,无论行的宽度如何,并且您希望它们都是正方形,您可以使用自定义CardView,并覆盖onMeasure()以强制1:1的宽高比.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
<com.example.view.SquareCardView
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" />
</com.example.view.SquareCardView>
Run Code Online (Sandbox Code Playgroud)
不是说你应该,但你可以.
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |