防止线性布局从其侧面水平方向推动元素
Prevent linearlayout pushing elements from its side in horizontal orientation
我有一个方向为 horizontal
的 LinearLayout
,我不希望我的第一个 TextView
推动其他的,这是我的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:weightSum="3"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TEST asdas asd" />
<TextView
android:id="@+id/item_qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="Qty: 2" />
<TextView
android:id="@+id/item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
tools:text="0.00"/>
</LinearLayout>
输出
文字不多,看起来像这样
但是当文本增加时出现问题...第一个 TextView
推动所有其他文本视图,如果第一个文本只是增加,我想保留第一个图像的外观 我想给它是一行而不是推相邻的文本。
我认为您的布局有问题。您正在设置项目的权重,但您将 layout_width
设置为 wrap_content
,这与 layout_weight
相矛盾。因此,我建议按如下方式修改布局(基本上设置 layout_width=0dp
)。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Some long text that is pushing the other texts to the right and taking up all the spaces!!!" />
<TextView
android:id="@+id/item_qty"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Qty: 2" />
<TextView
android:id="@+id/item_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
tools:text="0.00" />
</LinearLayout>
希望对您有所帮助!
基本上,如果您使用权重,则必须将 layout_height 设置为 0,以实现垂直方向的线性布局。而 layout_width 水平线性布局为 0。
我有一个方向为 horizontal
的 LinearLayout
,我不希望我的第一个 TextView
推动其他的,这是我的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:weightSum="3"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TEST asdas asd" />
<TextView
android:id="@+id/item_qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="Qty: 2" />
<TextView
android:id="@+id/item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
tools:text="0.00"/>
</LinearLayout>
输出
文字不多,看起来像这样
但是当文本增加时出现问题...第一个 TextView
推动所有其他文本视图,如果第一个文本只是增加,我想保留第一个图像的外观 我想给它是一行而不是推相邻的文本。
我认为您的布局有问题。您正在设置项目的权重,但您将 layout_width
设置为 wrap_content
,这与 layout_weight
相矛盾。因此,我建议按如下方式修改布局(基本上设置 layout_width=0dp
)。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Some long text that is pushing the other texts to the right and taking up all the spaces!!!" />
<TextView
android:id="@+id/item_qty"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Qty: 2" />
<TextView
android:id="@+id/item_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
tools:text="0.00" />
</LinearLayout>
希望对您有所帮助!
基本上,如果您使用权重,则必须将 layout_height 设置为 0,以实现垂直方向的线性布局。而 layout_width 水平线性布局为 0。