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>