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_weight
和 weightSum
来管理布局中的部分。并将 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>
我的目标是在标题、星星和想法的右边有一个 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_weight
和 weightSum
来管理布局中的部分。并将 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>