LinearLayout中的ImageView - 错误的比例

时间:2016-09-16 12:08:49

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

我正在尝试使用比率为20%和80%的两个主要元素创建项目布局到RecyclerView。第一个元素是ImageView,第二个元素是LinearLayout,带有一些TextViews。基本上,它应该是这样的:

  20%          80%
+-----+-------------------+
| Img | Author, Date      |
+-----+ Title...          |
|                         |
+-------------------------+

所以,我创建如下布局,但图像总是大于20%。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

            <ImageView
                android:id="@+id/image"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:src="@drawable/image" />

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="4"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/author"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/date"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                </LinearLayout>

                <TextView
                    android:id="@+id/title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>

    </LinearLayout>

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

我正在尝试layout_width的每个组合,但这些比率总是有问题。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

尝试:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="1"
        android:orientation="horizontal">

            <ImageView
                android:id="@+id/image"
                android:layout_width="0dp"
                android:layout_weight=".2"
                android:layout_height="match_parent"
                android:src="@drawable/image" />

            <LinearLayout
                android:layout_width="0dp"
                 android:layout_weight=".8"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/author"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/date"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                </LinearLayout>

                <TextView
                    android:id="@+id/title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>

答案 1 :(得分:0)

首先把android:weightSum =&#34; 5&#34;在父线性布局中。第二,它不仅仅是比例,而且图像源的位图也很重要。在imageview中设置之前,您可以使用剪切缩短图像(图像资源)。 如果权重有效,请告诉我。

答案 2 :(得分:0)

您错过了将weightSum提供给父版面。 只需在您的案例LinearLayout中为主要布局添加weightSum。

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="5">

答案 3 :(得分:0)

到目前为止,我已经了解您要创建列表行,然后需要修复布局和图像视图的高度,如下所示。

<?xml version="1.0" encoding="utf-8"?>
 <android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image"
            android:layout_width="0dp"
            android:layout_height="75dp"
            android:layout_weight="0.2"
            android:scaleType="centerInside"
            android:src="@drawable/image" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.8"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/author"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

            </LinearLayout>

            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>

    </LinearLayout>

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