布局中的边框具有意想不到的空间

时间:2013-12-24 15:50:48

标签: android android-layout android-drawable

我有一个带边框的布局。我的问题是,在边框和其他布局之间有一个空格,但我不知道它来自哪里。

space between border and other element

我的布局看起来像

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/BackgroundLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<!-- Layout come's here :) -->
</LinearLayout>

BackgroundLayout的样式如下:

<style name="BackgroundLayout">
    <item name="android:background">@drawable/frame_border</item>   
    <item name="android:orientation">vertical</item>
    <item name="android:paddingLeft">@dimen/line_width</item>
    <item name="android:paddingRight">@dimen/line_width</item>
</style>

和frame_border(是一个drawable.xml)看起来像:

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
      <item>
        <shape android:shape="rectangle" >
          <stroke
              android:width="@dimen/line_width"
              android:color="@color/background_color" />
          <solid android:color="@color/background_color" />

        </shape>
      </item>
      <item
          android:left="@dimen/line_width"
          android:right="@dimen/line_width"
          android:bottom="@dimen/line_width">
        <bitmap android:src="@drawable/background" android:gravity="fill_horizontal|fill_vertical"     />
      </item>
</layer-list>

@ dimen / line_width的大小为5dp。

我的风格的填充与边框的大小相同。所以应该有任何不同(希望如此)。

修改 为了阐述这个问题,我创建了一个新视图(见下文)。背景保持不变。视图(LinearLayout是黑色区域):

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame_container"
    style="@style/BackgroundLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black"
        android:orientation="vertical"
        android:weightSum="1" >
    </LinearLayout>
</FrameLayout>

解决方案

到目前为止,我的解决方案是将背景图像位置从@ dimen / line_width(5dp)更改为5.5dp。不满意,但它确实有效。

  <item
      android:left="5.5dp"
      android:right="5.5dp"
      android:bottom="5.5dp">
    <bitmap android:src="@drawable/background" android:gravity="fill_vertical|fill_horizontal"/>
  </item>

2 个答案:

答案 0 :(得分:0)

编辑:不是100%肯定,但也许这是股票Android分频器的问题。以下代码适用于我。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/border"
    android:padding="4dip"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:divider="@drawable/horizontal_divider"
        android:dividerHeight="4dp" >
    </ListView>

</LinearLayout>

background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#fd9f8d" />
    <stroke android:width="4dip" android:color="#BDBCBC"/>
</shape>

horizo​​ntal_divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:color="#FFFFFF"
        android:width="2dip"
    />
    <size
        android:height="1dip"
    />
</shape>

result after edit

答案 1 :(得分:0)

来自:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/BackgroundLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
   <!-- Layout come's here :) -->
 </LinearLayout>

你的风格有填充。检查并发布结果。