gpt4 book ai didi

android - 在不排挤其他 View 的情况下使 TextView 尽可能宽

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:16 26 4
gpt4 key购买 nike

我想在我的应用中进行以下布局处理:

enter image description here

如您所见,文本可以尽可能宽,而不会将出现在其右侧的其他 View 推离屏幕,并根据需要进行省略。永远不会有超过 3 个颜色样本,并且不少于 1 个,并且所有样本和圆圈中的 x 必须始终可见。 当文本很短时,它的行为应该如最后两行(蕨类植物)所示

我尝试将文本和图像放在 LinearLayout 中,但是当文本太长时图像不可见(或不完全可见)。我认为有一些方法可以表明图像应该始终占据所需的空间,而 TextView 占据其余部分或所需的空间,但我似乎无法理解出如何。我不知道 RelativeLayout 是否更适合这个,或者 TableLayout/TableRowGridLayout ,尽管我读过的任何内容似乎都涵盖了这种情况。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/plant_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="end"
android:layout_marginRight="3dp"/>

<LinearLayout
android:id="@+id/color_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_remove_plant"
android:visibility="invisible"/>
</LinearLayout>

<LinearLayout
android:id="@+id/color_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:visibility="gone">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_remove_plant"
android:visibility="invisible"/>
</LinearLayout>

<LinearLayout
android:id="@+id/color_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:visibility="gone">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_remove_plant"
android:visibility="invisible"/>
</LinearLayout>

<ImageView
android:id="@+id/remove_plant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_remove_plant"
android:layout_marginLeft="3dp"/>

</LinearLayout>

最佳答案

这是一个工作布局。正在发生的两件事。第一,行使用 LinearLayoutlayout_width="wrap_content"。这可以防止 LinearLayout 扩展到其内容之外,从而保持所有内容保持对齐(您的底部两个示例)。二,TextView 使用 android:layout_weight="1"android:layout_width="0dp" 告诉 LinearLayout 它应该扩展此 TextView 以填充可用空间的其余部分,但不要推出其他 View (您的前三个示例)。注意:这不是 layout_weight 所做的全部,只是它在这种情况下所做的。

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

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

<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:lines="1"
android:text="This is a long line of text and is testing something. This is a long line of text and is testing something. This is a long line of text and is testing something." />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#F00" />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#0F0" />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#00F" />

<Button
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp" />
</LinearLayout>

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

<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:lines="1"
android:text="This is a long line of text and is testing something. This is a long line of text and is testing something. This is a long line of text and is testing something." />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#F00" />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#0F0" />

<Button
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp" />
</LinearLayout>


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

<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:lines="1"
android:text="This is some line of text." />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#F00" />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#00F" />

<Button
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp" />
</LinearLayout>

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

<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:lines="1"
android:text="This is short" />

<View
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="#F00" />

<Button
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp" />
</LinearLayout>

</LinearLayout>

关于android - 在不排挤其他 View 的情况下使 TextView 尽可能宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com