圆角线性布局在角落上留出额外空间

时间:2017-01-04 09:49:46

标签: android xml android-linearlayout

我正在使用一些按钮和textview创建圆角线性布局,我使用自定义选择器作为布局的背景。我的问题是布局在角落有额外的空间如何删除?任何帮助将不胜感激 这是我的代码

<?xml version="1.0" encoding="utf-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp"
    >
    <solid android:color="#FFFFFF"/>
    <corners
        android:bottomRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp"
        />
    <stroke android:width="2dip"
            android:color="@color/#275D69"/>
</shape>

布局:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/selector"
    />

当前输出:enter image description here

不要在我放置红色标记的位置。

5 个答案:

答案 0 :(得分:1)

使用以下代码,您可以在背景中使用最小空间的背景

 <?xml version="1.0" encoding="utf-8"?>
   <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:padding="10dp"
      android:shape="rectangle">
    <solid android:color="#FFFFFF" />
    <corners android:radius="5dp" />
    <stroke
      android:width="2dip"
      android:color="#275D69" />
   </shape>

这可能包括角落的空间,但它太低了。

只需减少radius值。

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle" android:padding="10dp">
   <solid android:color="#FFFFFF"/>
   <corners
      android:bottomRightRadius="15dp"
      android:bottomLeftRadius="15dp"
      android:topLeftRadius="15dp"
      android:topRightRadius="15dp" />
   <stroke android:width="0dip"
    android:color="@color/#275D69"/>
</shape>
<corners android:radius="6dip" />

corner radius放在你想要的任何地方。

答案 2 :(得分:0)

以下是您需要遵循的解决方案:

<?xml version="1.0" encoding="utf-8"?>
   <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">

      <solid android:color="#FFFFFF"/>
          <corners
            android:bottomRightRadius="15dp"
            android:bottomLeftRadius="15dp"
            android:topLeftRadius="15dp"
            android:topRightRadius="15dp" />

      <stroke
            android:width="2dip"
            android:color="#275D69"/>

 </shape>

现在在主xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical">

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:margin="10dp"
        android:background="@drawable/selector"
        android:orientation="vertical">
   </LinearLayout>

</LinearLayout>

问题解决了!

答案 3 :(得分:0)

尝试使用这种方法,不是最明确的解决方案,但对我而言:

创建一个透明背景的布局容器,并将其用作圆角布局的容器

<LinearLayout
.....
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/transparent"
......>

  <LinearLayout

    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/selector"
    android:orientation="vertical">

     <!-- content of the rounded ll -->
   </LinearLayout>
</LinearLayout>

白色空间应该消失

答案 4 :(得分:0)

  

您可以使用cardView

制作圆角
 <android.support.v7.widget.CardView 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
app:cardCornerRadius="5dp"
app:cardBackgroundColor="#D3D3D3"
app:cardPreventCornerOverlap="false"
card_view:cardPreventCornerOverlap="false">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="3dp" />

</android.support.v7.widget.CardView>