防止线性布局从其侧面水平方向推动元素

Prevent linearlayout pushing elements from its side in horizontal orientation

我有一个方向为 horizontalLinearLayout,我不希望我的第一个 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。