如何在相对布局中的 ImageView 上方添加一条水平 1px 线?

40

如何在相对布局中,在ImageView上方添加一条白色的水平1像素线?

<RelativeLayout
android:id="@+id/widget38"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="108px"
android:layout_y="87px"
>  
<ImageView
android:id="@+id/widget39"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
>  
</ImageView>  
</RelativeLayout>
2个回答

110

只需在XML中的任何位置添加以下行。

<View android:background="#ffffff" 
      android:layout_width = "match_parent" 
      android:layout_height="1dp"/>

编辑:尝试这个:

<RelativeLayout
android:id="@+id/widget38"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="108px"
android:layout_y="87px"
>
<View android:id="@+id/separator" 
 android:background="#ffffff" 
 android:layout_width = "fill_parent"
 android:layout_height="1dip"
 android:layout_centerVertical ="true"
 android:layout_alignParentTop="true"/>
<ImageView
 android:id="@+id/widget39"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@id/separator"
 android:layout_alignParentRight="true"
/>  
</RelativeLayout>

我添加了这个代码,它运行得很好,谢谢!但是android:layout_above="@id/your_image_view_id"无法正常工作,它不断地给我报错。所以我不得不删除这个属性,但是这一行代码仍然挂在相对布局的中间位置。 - dropsOfJupiter

18

考虑将行的布局移动到单独的文件中:

<!-- horizontal_line.xml -->
<?xml version="1.0" encoding="utf-8"?>
<View
    style="@style/HorizontalLine" />

引用自定义样式定义:
<!-- styles.xml -->
<style name="HorizontalLine">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">@dimen/horizontal_line_height</item>
    <item name="android:background">@color/horizontal_line_fill_color</item>
    <item name="android:layout_marginTop">@dimen/large_spacer</item>
    <item name="android:layout_marginBottom">@dimen/large_spacer</item>
</style>

...然后您可以在布局中包含它:

<RelativeLayout
    android:id="@+id/widget38"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="108px"
    android:layout_y="87px" >

    <include
        android:id="@+id/horizontal_line"
        layout="@layout/horizontal_line" />

    <ImageView
        android:id="@+id/widget39"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/horizontal_line"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true" />

</RelativeLayout>

9
我喜欢这种方法,因为它减少了重复,并清理了布局文件(+1)。不过,我会跳过 <include>,直接在布局XML中使用 <View style="@style/HorizontalLine" />。更简单且效果相同。 - Jonik

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