如何在Android

时间:2017-09-26 03:12:16

标签: android xml android-layout

在一个Android应用程序中,我正在制作一个ListView,它使用在单独的xml文件中设计的自定义行,在这个xml文件中,我需要在ImageView的边界定位TextView和两个按钮,这很难要做的是因为ImageView不是按钮/ textview的父级,所以我不确定如何完美地定位它们。这是listView的图像以及我希望自定义行的显示方式:

Click here

这是我到目前为止提出的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>

这产生了这个:

Click here

正如您所看到的,按钮并不是我想要的位置。当我将它们向下移动到图像上时,它们会向屏幕底部拍摄,因为它将它与父母的底部对齐,这是整个屏幕的大小。我怎么能这样做,如果我把它对齐到某个东西的底部,它只会到达图像的底部?

另外还有一个问题:如何在概念图像的行顶部的TexView后面添加黑条?我想用代码这样做,所以它可以保持相对于图像的大小,因为如果我将黑色条形成一个图像,它将被限制为一个尺寸。

1 个答案:

答案 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>