android边框周围视图无法正常工作

时间:2013-10-11 07:26:13

标签: android border relativelayout shape

我在RelativeLayout中有5个视图(顶部,底部,左侧,右侧,中间),然后将相机预览放入其中,得到以下结果。

camera preview

我还想要的是在中心视图周围绘制边框。我使用了一个可绘制的形状,但它没有用。边框适用于除中心之外的相对布局中的所有视图。

如何在它周围画边框?

这是布局:

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

    <RelativeLayout
        android:id="@+id/camera_preview"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <View
            android:id="@+id/top"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:background="#80000000" />

        <View
            android:id="@+id/bottom"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:layout_alignParentBottom="true"
            android:layout_gravity="center"
            android:background="#80000000" />

        <View
            android:id="@+id/left"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_above="@id/bottom"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/top"
            android:layout_gravity="center"
            android:background="#80000000" />

        <View
            android:id="@+id/right"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_above="@id/bottom"
            android:layout_alignParentRight="true"
            android:layout_below="@id/top"
            android:layout_gravity="center"
            android:background="#80000000" />

        <View
            android:id="@+id/center"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/bottom"
            android:layout_below="@id/top"
            android:layout_gravity="center"
            android:layout_margin="25dp"
            android:layout_toLeftOf="@+id/left"
            android:layout_toRightOf="@id/right"
            android:background="@drawable/border_red" />

    </RelativeLayout>

    <Button
        android:id="@+id/button_capture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Capture" />

</LinearLayout>

这是border_red.xml:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
    <padding android:left="10dp" android:top="10dp"
        android:right="10dp" android:bottom="10dp" />
    <stroke android:color="#FF0000" android:width="5dp" />
</shape>

3 个答案:

答案 0 :(得分:2)

这是因为您为View提供了保证金,这对于该区域来说太过分了。这就是为什么您的中心View不可见。替换您的中心View使用下面的View代码。这对我有用,希望它也适合你 例如

<View
        android:id="@+id/center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/bottom"
        android:layout_below="@id/top"
        android:layout_gravity="center"
        android:layout_toLeftOf="@+id/right"
        android:layout_toRightOf="@+id/left"
        android:background="@drawable/border_red" />

答案 1 :(得分:0)

替代解决方案: -

      <LinearLayout
        android:id="@+id/center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom"
        android:layout_below="@id/top"
        android:layout_gravity="center"
        android:layout_margin="25dp"
        android:layout_toLeftOf="@+id/left"
        android:layout_toRightOf="@id/right"
        android:background="#FF0000"
        android:padding="5dp">

        <View
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="#00000000"/>
      </LinearLayout>

答案 2 :(得分:0)

5dp

中将android:layout_height="5dp"的高度减少到View

水平线

  <View
     android:id="@+id/view"
     android:background="#FF4500"
     android:layout_width="fill_parent"
     android:layout_height="2dp"     
     android:layout_below="@+id/listview_id" />

垂直线

 <View
   android:id="@+id/view"
   android:background="#FF4500"
   android:layout_width="2dp"
   android:layout_height="fill_parent"     />