Android 具有文本视图的自适应换行的线性布局

Android 具有文本视图的自适应换行的线性布局,android,android-layout,Android,Android Layout,我正在努力完善一个ListView行项目,它有三个特定宽度的列 列A有一个按钮和垂直分隔符视图 列B有一个文本视图,旁边可能有也可能没有一个图像视图,这取决于具体情况 列C有一个不能显示任何内容的RelativeLayout,或一个TextView、复选框或ImageView,具体取决于具体情况 参见示例图像。鲱鱼鸥排不需要图标。鲱鱼x小黑背鸥(杂交)需要一个红色图标,与上面和下面的其他种类相似。然而,较长的物种名称将图标包装成两行时,会将其从视图中挤出 我曾尝试将TextView和Im

我正在努力完善一个
ListView
行项目,它有三个特定宽度的列

列A有一个
按钮
和垂直分隔符
视图

列B有一个
文本视图
,旁边可能有也可能没有一个
图像视图
,这取决于具体情况

列C有一个不能显示任何内容的
RelativeLayout
,或一个
TextView
复选框
ImageView
,具体取决于具体情况

参见示例图像。鲱鱼鸥排不需要图标。鲱鱼x小黑背鸥(杂交)需要一个红色图标,与上面和下面的其他种类相似。然而,较长的物种名称将图标包装成两行时,会将其从视图中挤出


我曾尝试将
TextView
ImageView
组合替换为一个
TextView
,其中填充了
SpannableStringBuilder
,但当我希望将图标定位在文本右侧时,它将图标定位在包装文本的末尾(请参见绿色啄木鸟示例)

我想要的行为是
ImageView
图标总是紧挨着
TextView
,当
TextView
较长时,
ImageView
在B列中占主导地位,
TextView
将其文本包装到一个稍小的空间中


这可能吗?

如果要用以下代码行显示,请尝试删除带有图标的
图像视图
,并将图标直接添加到
文本视图

textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.your_id, 0);

希望这有帮助

很难完全理解您的问题,但我解码的是,您需要将textview和imageview并排放置,这只有在您硬编码textview width并将textview height设置为匹配项时才可能,如下所示:

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


<Button
    android:id="@+id/button_count"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.15"
    android:background="@null"
    android:paddingBottom="3dp"
    android:paddingTop="3dp"
    android:text="+"
    android:textColor="@color/light_gray"/>

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:layout_marginEnd="5dp"
    android:layout_marginRight="5dp"
    android:background="@color/bpWhite"/>

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

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginEnd="3dp"
            android:layout_marginRight="3dp"
            android:layout_weight="0.90">

            <TextView
                android:id="@+id/textview_species_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:toStartOf="@+id/speciesBinIcon"
                android:layout_gravity="center_vertical"
                android:minHeight="44dp"
                android:paddingBottom="3dp"
                android:paddingTop="3dp"
                android:text="Species name"
                android:textColor="#000"
                android:textSize="15sp"/>

            <ImageView
                android:id="@+id/speciesBinIcon"
                android:alignParentEnd="true"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:paddingLeft="5dp"
                android:paddingStart="5dp"
                android:scaleType="fitXY"
                android:src="@drawable/ic_uncommon"
                android:visibility="gone"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.10"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/textview_rare"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginStart="5dp"
                android:layout_marginTop="4dp"
                android:background="@drawable/rare_border"
                android:gravity="center"
                android:text="@string/single_character_for_rare"
                android:textColor="@color/rareBackground"
                android:textStyle="bold"
                android:visibility="gone"/>

            <CheckBox
                android:id="@+id/checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:buttonTint="@color/rareBackground"
                android:gravity="center"
                android:visibility="gone"/>

            <ImageView
                android:id="@+id/high_count_warning"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="6dp"
                android:layout_marginStart="6dp"
                android:layout_marginTop="4dp"
                android:gravity="center"
                android:scaleType="fitXY"
                android:src="@drawable/ic_high_count"
                android:visibility="gone"/>

        </RelativeLayout>

</LinearLayout>

</LinearLayout>


p.S:代码没有经过测试,这只是一个一般的想法

您必须为您的textView
android:id=“@+id/textView\u species\u name”
为了让它正常工作。请记住,它必须是基于设备屏幕宽度的动态

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


<Button
    android:id="@+id/button_count"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.15"
    android:background="@null"
    android:paddingBottom="3dp"
    android:paddingTop="3dp"
    android:text="+"
    android:textColor="@color/light_gray"/>

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:layout_marginEnd="5dp"
    android:layout_marginRight="5dp"
    android:background="@color/bpWhite"/>

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

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginEnd="3dp"
            android:layout_marginRight="3dp"
            android:layout_weight="0.90">

            <TextView
                android:id="@+id/textview_species_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:toStartOf="@+id/speciesBinIcon"
                android:layout_gravity="center_vertical"
                android:minHeight="44dp"
                android:paddingBottom="3dp"
                android:paddingTop="3dp"
                android:text="Species name"
                android:textColor="#000"
                android:textSize="15sp"/>

            <ImageView
                android:id="@+id/speciesBinIcon"
                android:alignParentEnd="true"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:paddingLeft="5dp"
                android:paddingStart="5dp"
                android:scaleType="fitXY"
                android:src="@drawable/ic_uncommon"
                android:visibility="gone"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.10"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/textview_rare"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginStart="5dp"
                android:layout_marginTop="4dp"
                android:background="@drawable/rare_border"
                android:gravity="center"
                android:text="@string/single_character_for_rare"
                android:textColor="@color/rareBackground"
                android:textStyle="bold"
                android:visibility="gone"/>

            <CheckBox
                android:id="@+id/checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:buttonTint="@color/rareBackground"
                android:gravity="center"
                android:visibility="gone"/>

            <ImageView
                android:id="@+id/high_count_warning"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="6dp"
                android:layout_marginStart="6dp"
                android:layout_marginTop="4dp"
                android:gravity="center"
                android:scaleType="fitXY"
                android:src="@drawable/ic_high_count"
                android:visibility="gone"/>

        </RelativeLayout>

</LinearLayout>

</LinearLayout>