我正在为WearOS设计布局,但遇到了麻烦。我有一个ListView,ListView的每一行(TextView)占据了整个屏幕。现在,我想在每个TextViews的底部放置一个图标。我的目标是使其看起来像以下内容:
除了在每行上显示图标外,我目前拥有所需的一切。我已经导入了它,我只是不知道如何定义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>
我想使用这些布局,所以请尝试帮助我解决现有的问题。如果您对我尝试做的事情有其他建议,那么我愿意接受建议,但这就是我将如何实施它。感谢您的任何帮助。
答案 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>
输出:-------
答案 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>