如何调整图像大小以适应Android中CardView的固定大小?

时间:2016-06-04 23:43:38

标签: android android-layout imageview android-linearlayout android-cardview

我有几个CardView,每个都有一个ImageView。

每个ImageView都有一个layout_weight,使其适合每个CardView的相同宽度和固定高度(在本例中为80dp)。

当图像水平时,它们看起来不错,例如 1 2 5 。但是当它们是垂直的时,它们不适合像 3 4 那样。

enter image description here

我试过:直接在ImageViews上声明layout_weight /在LinearLayout中移动ImageViews并在其上声明layout_weight(实际代码)/ Buttons而不是ImageViews /使用adjustViewBounds和每个scaleType。这些都不起作用。

这是我每个CardView的实际代码,我将不胜感激!提前谢谢你:)

<android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:cardElevation="3dp"
                android:layout_marginTop="3dp"
                android:layout_marginLeft="7dp"
                android:layout_marginStart="7dp"
                android:layout_marginRight="7dp"
                android:layout_marginEnd="7dp">

                <LinearLayout android:id="@+id/cardview_inner_linearlayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <LinearLayout android:id="@+id/imageview_linearlayout"
                        android:layout_width="0dp"
                        android:layout_height="80dp"
                        android:layout_weight="7">

                        <ImageView android:id="@+id/imageview"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:scaleType="centerCrop"
                            android:src="@drawable/halloween1" />

                    </LinearLayout>

                    <LinearLayout android:id="@+id/whitearea_linearlayout"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:orientation="vertical">

                         // White area to the right of the image

                    </LinearLayout>

                </LinearLayout>

</android.support.v7.widget.CardView>

3 个答案:

答案 0 :(得分:1)

我强烈建议开始使用百分比而不是重量 https://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html

现在您可以使用以下布局:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="7dp"
    android:layout_marginRight="7dp"
    android:layout_marginTop="3dp"
    app:cardElevation="3dp">

<LinearLayout
    android:id="@+id/cardview_inner_linearlayout"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:baselineAligned="false"
    android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/imageview_linearlayout"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/imageview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:adjustViewBounds="true"
                android:scaleType="centerInside"
                android:src="@drawable/halloween1"/> 

        </LinearLayout>

        <LinearLayout
            android:id="@+id/whitearea_linearlayout"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:orientation="vertical">

        </LinearLayout>

    </LinearLayout>

</android.support.v7.widget.CardView>

答案 1 :(得分:0)

您可以尝试更改图像的缩放类型

答案 2 :(得分:0)

在ImageView属性中使用package com.test; import com.rethinkdb.RethinkDB; import com.rethinkdb.gen.exc.ReqlError; import com.rethinkdb.gen.exc.ReqlQueryLogicError; import com.rethinkdb.model.MapObject; import com.rethinkdb.net.Connection; public class DbConnection { public static final RethinkDB r = RethinkDB.r; Connection conn= r.connection().hostname("localhost").port(28015).connect(); r.db("test").tableCreate("authors").run(conn); }