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

时间:2018-06-28 13:00:19

标签: android android-layout listview textview wear-os

我正在为WearOS设计布局,但遇到了麻烦。我有一个ListView,ListView的每一行(TextView)占据了整个屏幕。现在,我想在每个TextViews的底部放置一个图标。我的目标是使其看起来像以下内容:enter image description here

除了在每行上显示图标外,我目前拥有所需的一切。我已经导入了它,我只是不知道如何定义XML。我尝试了其他StackOverFlow问题,但无法使其正常工作。我对自定义适配器也很有信心。是给我带来麻烦的布局。我是布局的新手,所以肯定是我不了解布局给我带来了麻烦。我尝试了以下教程,这些教程解释了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>

我想使用这些布局,所以请尝试帮助我解决现有的问题。如果您对我尝试做的事情有其他建议,那么我愿意接受建议,但这就是我将如何实施它。感谢您的任何帮助。

3 个答案:

答案 0 :(得分:1)

尝试以下操作:

<?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>

输出:-------

Output

答案 1 :(得分:0)

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

只需为LinearLayout的每一行更改XML中的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>

答案 2 :(得分:0)

您将方向用作 "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>