如何在Android中为RelativeLayout只添加底部边框

4

我创建了一个相对布局,只需要底部边框。如何实现呢?下面是我使用的RelativeLayout。

我在相对布局中添加了视图,但它显示在屏幕底部。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EAEAEA"
android:orientation="vertical" >

<TextView
    android:id="@+id/auth_lbl_register_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="#EAEAEA"
    android:clickable="true"
    android:ellipsize="none"
    android:fontFamily="FNB Sans"
    android:gravity="left"
    android:maxLines="50"
    android:paddingBottom="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    android:scrollHorizontally="false"
    android:text="@string/auth_into"
    android:textColor="@color/labelColor"
    android:textSize="20sp" />

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/border"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/cellnum_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:fontFamily="FNB Sans"
        android:text="@string/cell_num_label"
        android:textColor="@color/labelColor"
        android:textSize="15sp" />

    <EditText
        android:id="@+id/auth_txt_msisdn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="25dp"
        android:layout_toRightOf="@+id/cellnum_text"
        android:ellipsize="start"
        android:ems="10"
        android:gravity="center_horizontal"
        android:hint="Enter cell number"
        android:inputType="number"
        android:singleLine="true"
        android:textSize="15sp" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="5sp"
    android:paddingRight="5sp" >

    <CheckBox
        android:id="@+id/auth_cbx_agree_terms"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:button="@drawable/check_box"
        android:clickable="true"
        android:ellipsize="none"
        android:fontFamily="FNB Sans"
        android:gravity="left"
        android:maxLines="50"
        android:paddingLeft="10dp"
        android:paddingStart="30dp"
        android:scrollHorizontally="false"
        android:text="@string/auth_agree_terms"
        android:textColor="@color/labelColor"
        android:textSize="20sp" />
</RelativeLayout>

<!-- next -->

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/auth_cmd_validate"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_weight="0.9"
        android:background="#F49B00"
        android:gravity="center"
        android:paddingLeft="0dp"
        android:text="Next"
        android:textColor="@color/labelColor"
        android:textSize="20dp"
        android:textStyle="normal" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:src="@drawable/next_arrow_white" />
</RelativeLayout>

<!-- end of next -->

<TextView
    android:id="@+id/or_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="5dp"
    android:background="#EAEAEA"
    android:clickable="false"
    android:fontFamily="FNB Sans"
    android:gravity="center"
    android:padding="10sp"
    android:text="OR"
    android:textColor="@color/labelColor"
    android:textSize="20sp" />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/auth_cmd_register"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_weight="0.9"
        android:background="@color/white"
        android:gravity="center"
        android:paddingLeft="0dp"
        android:text="Register Online"
        android:textColor="@color/labelColor"
        android:textSize="20dp"
        android:textStyle="normal" />

    <ImageView
        android:id="@+id/imgArrowRight"
        android:layout_width="40dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:gravity="center"
        android:src="@drawable/line_arrow" />

    <View
        android:id="@+id/view"
        android:layout_width="fill_parent"
        android:layout_height="2dp"
        android:layout_alignParentBottom="true"
        android:background="@color/black" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/auth_cmd_terms"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_weight="0.9"
        android:background="#ffffff"
        android:gravity="center"
        android:paddingLeft="0dp"
        android:text="Terms and Condition"
        android:textColor="@color/labelColor"
        android:textSize="20dp"
        android:textStyle="normal" />

    <ImageView
        android:id="@+id/imgArrowRight1"
        android:layout_width="40dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:gravity="center"
        android:src="@drawable/line_arrow" />
</RelativeLayout>


这个显示在屏幕底部是因为layout_alignParentBottom属性以及RelativeLayout没有指定高度。 - kandroidj
1
请注意,您需要为相对布局指定所需行为的高度。如果将layout_alignParentBottom设置为wrap_content,则会将视图包装到屏幕底部,而不会执行其他操作。 - kandroidj
3个回答

3
当使用 android:layout_alignParentBottom="true" 时,您需要指定 android:layout_height="N",其中 N 是您所需高度的 dp 值:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/relativeLayoutOne"
    android:layout_width="fill_parent"
    android:layout_height="200dp">
    <!-- Bottom Border shows -->
    <View android:layout_alignParentBottom="true"
        android:layout_height="1dp"
        android:background="#F00"
        android:layout_width="fill_parent"/>
</RelativeLayout>

<RelativeLayout
    android:id="@+id/relativeLayoutTwo"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="Text View 1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/relativeLayoutThree"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="Text View 2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>
</LinearLayout>

1
你可以向你的RelativeLayout添加一个新的ImageView,将高度设置为1像素,将其对齐到底部,然后这个ImageView可以被“视为”边框。
请看以下xml:
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="55dp" >

    <TextView
        android:id="@+id/txtCategoryName"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_weight="0.9"
        android:background="#ffffff"
        android:gravity="center"
        android:paddingLeft="0dp"
        android:text="Register"
        android:textColor="@color/labelColor"
        android:textSize="20dp"
        android:textStyle="normal" />

    <ImageView
        android:id="@+id/imgArrow"
        android:layout_width="40dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:gravity="center"
        android:src="@drawable/line_arrow" />

    <ImageView
        android:id="@+id/imgBorder"
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:layout_alignParentBottom="true" 
        android:background="#ff0000"/>
</RelativeLayout>

@inner_class7 是正确的,你需要给 RelativeLayout 一个高度值,否则它会显示在屏幕底部。


1
你可以使用 View 为你的 RelativeLayout 添加底部边框。
在你的 RelativeLayout 中添加这个。
<View
     android:id="@+id/view"
     android:layout_width="fill_parent"
     android:layout_height="2dp"
     android:layout_alignParentBottom="true"
     android:background="@color/black" />

我希望它有所帮助!


这会给整个屏幕而不是特定相对布局提供底边框。我有线性布局,其中有两个或三个相对布局。那么应该怎么做,请指导我。 - allDroid
然后将视图添加到内部相对布局中,在其中您想要底部边框或显示整个xml文件。 - Rajesh Jadav
1
你在评论中提到:“我有一个线性布局,其中包含两个或三个相对布局”,所以请展示整个XML文件,而不仅仅是相对布局。 - Rajesh Jadav
通过设置相对布局的高度,我成功实现了底部边框。 - allDroid
@berry,难道不应该接受我提供的答案吗?因为其他答案都没有解释需要添加layout_height... - kandroidj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接