Android 上的 LinearLayout 问题

LinearLayout issue on Android

我的目标是在标题、星星和想法的右边有一个 TextView。 我通常知道如何用 orientation="horizontal" 做到这一点,但实际上这很棘手,因为我看不出我做错了什么。

这是我的代码:

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:background="@color/white">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:orientation="vertical"
                    android:layout_height="match_parent">
                    <TextView
                        android:id="@+id/offertitle"
                        android:paddingTop="15dp"
                        android:paddingLeft="15dp"
                        android:paddingRight="15dp"
                        android:textSize="24dp"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/blue" />


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/troisieme"
                        android:orientation="horizontal">
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="15dp"
                            android:id="@+id/offerstars"
                            android:src="@drawable/stars" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="match_parent"
                            android:gravity="center_vertical"
                            android:id="@+id/offerthoughts"
                            android:text="53 avis"
                            android:textColor="@color/blue" />
                    </LinearLayout>
                </LinearLayout>


                <TextView
                    android:layout_height="match_parent"
                    android:layout_width="wrap_content"
                    android:id="@+id/offer_price"
                    android:textColor="#000000"
                    android:gravity="right"
                    android:text="blablabla"
                    android:background="#D3D3D3"/>

这是一张图片:

包含标题等并与您的TextView并排的Layout将宽度设置为match_parent,这是错误的。 TextView 没有 space 那么,下面您已更正您的设计。它已将宽度设置为 0dp 并将重量设置为 1 - 因此它填充可用 space.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorWhite"
    android:orientation="horizontal">


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

        <TextView
            android:id="@+id/offertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="15dp"
            android:textColor="@color/colorRed"
            android:textSize="24dp"/>


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

            <ImageView
                android:id="@+id/offerstars"
                android:layout_width="wrap_content"
                android:layout_height="15dp"
                android:src="@drawable/ic_menu_start"/>

            <TextView
                android:id="@+id/offerthoughts"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:text="53 avis"
                android:textColor="@color/colorOrange"/>
        </LinearLayout>
    </LinearLayout>


    <TextView
        android:id="@+id/offer_price"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#D3D3D3"
        android:gravity="right"
        android:text="blablabla"
        android:textColor="#000000"/>
</LinearLayout>

如果你想实现部分向左和部分向右,你可以使用 RelativeLayout

如果您仍想在 Linearlayout 中执行,则应在其中使用 Weight

你可以这样做

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white">


    <LinearLayout
        android:id="@+id/lin_left"
        android:layout_toLeftOf="@+id/offer_price"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/offertitle"
            android:paddingTop="15dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:textSize="24dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/troisieme"
            android:orientation="horizontal">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="15dp"
                android:id="@+id/offerstars"
                android:src="@mipmap/ic_launcher" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:id="@+id/offerthoughts"
                android:text="53 avis"
                android:textColor="@android:color/black" />
        </LinearLayout>
    </LinearLayout>


    <TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:id="@+id/offer_price"
        android:textColor="#000000"
        android:gravity="right"
        android:text="blablabla"
        android:background="#D3D3D3"/>

    </RelativeLayout>

试试这个。您可以使用 layout_weightweightSum 来管理布局中的部分。并将 width 设置为 0dp 以便体重会影响。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="3"
    android:background="#FFFFF0"
    android:orientation="horizontal">

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

        <TextView
            android:id="@+id/offertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="15dp"
            android:text="Hello"
            android:textColor="@color/colorPrimary"
            android:textSize="24dp" />


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

            <ImageView
                android:id="@+id/offerstars"
                android:layout_width="wrap_content"
                android:layout_height="15dp"
                android:src="@mipmap/ic_launcher" />

            <TextView
                android:id="@+id/offerthoughts"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:text="53 avis"
                android:textColor="@color/colorAccent" />
        </LinearLayout>
    </LinearLayout>


    <TextView
        android:id="@+id/offer_price"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#D3D3D3"
        android:gravity="center"
        android:text="blablabla"
        android:textColor="#000000" />
</LinearLayout>