按钮间距

时间:2012-12-07 21:33:22

标签: android layout button margin

我正在尝试将按钮的边距设置为0,(因此按钮之间没有间距)。

基本上,我希望我的按钮看起来像那样(具有以下样式和颜色):

enter image description here

任何想法我怎么能完成这样的任务?我不想自己创建一个9补丁图像(因为我没有任何知识这样做)。

2 个答案:

答案 0 :(得分:8)

在这种特定情况下,您可以使用XML轻松完成此任务。 这是你可以通过两个步骤实现它的方法:

第1步

在可绘制文件夹中创建3个形状:

  • 第一个形状用于左键: shape_button_left.xml 。此形状具有径向左角和渐变背景。

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <stroke
            android:width="1dp"
            android:color="#BFBFBF" >
        </stroke>
    
        <corners
            android:bottomLeftRadius="10dp"
            android:topLeftRadius="10dp" >
        </corners>
    
        <gradient android:startColor="#D2D2D2" android:endColor="#F2F2F2" android:angle="90"/>
    
    </shape>
    
  • 第二个形状用于中心按钮: shape_button_center.xml 。此形状不会为角定义任何内容,也具有渐变背景。

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <stroke
            android:width="1dp"
            android:color="#BFBFBF" >
        </stroke>
    
        <gradient android:startColor="#D2D2D2" android:endColor="#F2F2F2" android:angle="90"/>
    
    </shape>
    
  • 第三个形状用于右键: shape_button_right.xml 。此形状具有径向右角和渐变背景。

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <stroke
            android:width="1dp"
            android:color="#BFBFBF" >
        </stroke>
    
        <corners
            android:bottomRightRadius="10dp"
            android:topRightRadius="10dp" >
        </corners>
    
        <gradient android:startColor="#D2D2D2" android:endColor="#F2F2F2" android:angle="90"/>
    
    </shape>
    

第2步

现在,我们可以在简单的视图中使用这些形状来获得按钮的效果。 在您的布局XML中添加下一个代码:

<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:gravity="center" >

    <!-- Button Left -->

    <LinearLayout
        android:id="@+id/button_left"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_button_left"
        android:gravity="center"
        android:padding="10dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Left"
            android:textColor="#333333"
            android:textSize="20sp" />
    </LinearLayout>
    <!-- End Button Left -->


    <!-- Button Center -->

    <LinearLayout
        android:id="@+id/button_center"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_button_center"
        android:gravity="center"
        android:padding="10dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Center"
            android:textColor="#333333"
            android:textSize="20sp" />
    </LinearLayout>
    <!-- End Button Center -->


    <!-- Button Right -->

    <LinearLayout
        android:id="@+id/button_right"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_button_right"
        android:gravity="center"
        android:padding="10dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Right"
            android:textColor="#333333"
            android:textSize="20sp" />
    </LinearLayout>
    <!-- End Button Right -->

</LinearLayout>

就是这样 现在,您可以在代码中将onClick侦听器添加到LinearLayouts,并像按钮一样使用它。


在我的手机上测试此代码会产生下一个结果: enter image description here

答案 1 :(得分:1)

  

任何想法我怎么能完成这样的任务?我不想自己创建一个9补丁图像(因为我没有任何知识这样做)。

我担心你可能没有多少选择。每个按钮之间的固有间距是由于框架使用的现有9补丁背景中直接构建的额外透明像素的结果。要替换此行为,您必须将按钮的背景设置为不包含此固有间距的其他Drawable

可以在代码中完成的另一个选项是创建用于每个背景的XML可绘制形状。您可以创建具有角半径,填充渐变和笔划的单个形状,就像您的图像一样。您可以阅读有关创建XML Drawables in the docs的更多信息。