Как поместить изображение внизу строки TextView в ListView - PullRequest
0 голосов
/ 28 июня 2018

Я работаю над макетом для WearOS и у меня возникли проблемы. У меня есть ListView, и каждая строка (TextView) ListView занимает весь экран. Теперь я хочу поместить значок в нижней части каждого из TextView. Моя цель, чтобы он выглядел следующим образом: enter image description here

У меня сейчас есть все, что я хочу, кроме значка в каждой строке. Я импортировал его, я просто не знаю, как определить XML. Я пробовал другие вопросы StackOverFlow, но я не мог заставить их работать. Я также уверен в моем собственном адаптере. Это макеты, которые доставляют мне неприятности. Я новичок в макетах, поэтому определенно моя неспособность понять их доставляет мне неприятности. Я попробовал следующие уроки, которые объясняют, как работают макеты Android, но я просто не получаю их по какой-то причине.

XML для ListView:

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

И XML для каждой строки ListView:

<?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 голосов
/ 28 июня 2018

вы используете ориентацию как "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>
0 голосов
/ 28 июня 2018

Попробуйте следующее:

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

0 голосов
/ 28 июня 2018

Установка 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>
...