如何将图像放在 ListView 中 TextView 行的底部

How to put an image at bottom of TextView row in a ListView

我正在为 WearOS 设计布局,但遇到了问题。我有一个 ListView,ListView 的每一行(TextView)都占据了整个屏幕。现在,我想在每个 TextView 的底部放置一个图标。我的目标是让它看起来像下面这样:

除了每一行都有图标外,我现在拥有我想要的一切。我导入了它,我只是不知道如何定义XML。我尝试了其他 Whosebug 问题,但无法解决问题。我也对我的自定义适配器充满信心。给我带来麻烦的是布局。我是布局的新手,所以肯定是我不理解它们给我带来了麻烦。我尝试按照解释 Android 布局如何工作的教程进行操作,但由于某种原因我没有得到它们。

ListView 的 XML 是:

<?xml version="1.0" encoding="utf-8"?>
<!-- Defines the layout for the ListView-->
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/goals_list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</android.support.constraint.ConstraintLayout>

并且 ListView 的每一行的 XML 是:

<?xml version="1.0" encoding="utf-8"?>
<!-- Defines the layout for a row in the ListView-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    >
    <TextView
        android:id="@+id/goal_row"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="-"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" >
    </TextView>
    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/info_icon"
        />
</LinearLayout>

我想使用这些布局,所以请尝试用我已有的布局帮助我。如果您对以不同的方式做我正在尝试做的事情有建议,我愿意接受建议,但这就是我要实施它的方式。感谢您的任何帮助。

设置 android:orientation="horizontal" 将并排放置视图,而 android:orientation="vertical" 将它们垂直放置,一个在另一个下面。

只需将 XML 中的 LinearLayout 更改为 ListView 的每一行,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    >
   <TextView
        android:id="@+id/goal_row"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="-"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" >
    </TextView>
    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/info_icon"
    />
</LinearLayout>

你正在使用方向作为 "horizontal" 它的作用是将你的小部件并排放置并导致重叠将其更改为 "vertical" 准备就绪:

 <?xml version="1.0" encoding="utf-8"?>
<!-- Defines the layout for a row in the ListView-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    >
    <TextView
        android:id="@+id/goal_row"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="-"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" >
    </TextView>
    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:src="@drawable/info_icon"
        />
</LinearLayout>

您也可以使用单个 textview 并将其绘制为 bottom

    <?xml version="1.0" encoding="utf-8"?>
<!-- Defines the layout for a row in the ListView-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    >
    <TextView
        android:id="@+id/goal_row"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="-"
        android:drawableBottom="@drawable/ic_icon"
        android:drawablePadding="10dp"
        android:padding="5dp"
        android:textColor="@color/colorPrimaryDark"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" >
    </TextView>

</LinearLayout>

尝试以下操作:

<?xml version="1.0" encoding="utf-8"?>
<!-- Defines the layout for a row in the ListView-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
>
<TextView
    android:id="@+id/goal_row"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Hello W"
    android:layout_above="@id/base"
    android:layout_alignParentTop="true"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:textSize="20sp"
    android:textStyle="bold" >
</TextView>

<ImageView
    android:id="@+id/icon"
    android:layout_above="@id/base"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon"/>

<View
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:id="@+id/base"
    android:layout_alignParentBottom="true">
</View>

</RelativeLayout>

输出:--------