在一个Android应用程序中,我正在制作一个ListView,它使用在单独的xml文件中设计的自定义行,在这个xml文件中,我需要在ImageView的边界定位TextView和两个按钮,这很难要做的是因为ImageView不是按钮/ textview的父级,所以我不确定如何完美地定位它们。这是listView的图像以及我希望自定义行的显示方式:
这是我到目前为止提出的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal">
<ImageView
android:id="@+id/gameImageID"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/overwatch" />
<TextView
android:id="@+id/gameNameID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:text="TextView" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:weightSum="2"
android:layout_marginTop="28dp"
android:layout_below="@+id/gameNameID"
android:layout_alignParentStart="true">
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnJoinLobby"
android:layout_width="102dp"
android:layout_height="wrap_content"
android:onClick="myClickHandlerJoin"
android:text="Join Lobby"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnCreateLobby"
android:layout_width="102dp"
android:layout_height="wrap_content"
android:onClick="myClickHandlerCreate"
android:text="Create Lobby"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp" />
</RelativeLayout>
</LinearLayout>
这产生了这个:
正如您所看到的,按钮并不是我想要的位置。当我将它们向下移动到图像上时,它们会向屏幕底部拍摄,因为它将它与父母的底部对齐,这是整个屏幕的大小。我怎么能这样做,如果我把它对齐到某个东西的底部,它只会到达图像的底部?
另外还有一个问题:如何在概念图像的行顶部的TexView后面添加黑条?我想用代码这样做,所以它可以保持相对于图像的大小,因为如果我将黑色条形成一个图像,它将被限制为一个尺寸。
答案 0 :(得分:0)
您不需要将按钮包裹在相对布局中......
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/gameImageID"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/overwatch" />
<TextView
android:id="@+id/gameNameID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:text="TextView" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/gameNameID"
android:layout_marginTop="28dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnJoinLobby"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:onClick="myClickHandlerJoin"
android:text="Join Lobby" />
<Button
android:id="@+id/btnCreateLobby"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:onClick="myClickHandlerCreate"
android:text="Create Lobby" />
</LinearLayout>
</RelativeLayout>