0

我使用可绘制形状设置按钮的样式,这会导致按钮过度扩展一点或失去它的边距,因此它不能与其他按钮很好地对齐。知道为什么:

在此处输入图像描述

这是我的布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
 <TableLayout
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:stretchColumns="*"
    android:weightSum="2" >
<TableRow
        android:id="@+id/tableRowMem"
        android:layout_weight="1" >

            <Button
                android:id="@+id/buttonA"
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="A"/>

        <Button
            android:id="@+id/buttonB"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="B" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_weight="1" >

        <Button
            android:id="@+id/buttonC"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:text="C" />

        <Button
            android:id="@+id/buttonD"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:background="@drawable/buttonred"
            android:text="D" />
    </TableRow>
    </TableLayout>
    </LinearLayout>

这是可绘制的形状:

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

    <shape>
         <gradient
    android:startColor="#FFFF0000"
    android:endColor="#80FF00FF"
    android:angle="45"/>

    </shape>
</item>
</selector>
4

5 回答 5

1

似乎每个按钮都有一些填充或布局边距的 dp。

尝试设置

android:padding=0

如果这不起作用

android:layout_margin=0

这将消除默认按钮的边距,如果要解决其他方式,请为自定义按钮添加边距

于 2013-02-23T06:47:57.737 回答
1

看下图。默认按钮是9个补丁图像,所以按钮后面总是有多余的空间,这是你按钮的捕获。因此,当您设置背景资源时,空白空间将被图像填充。所以最好ImageView改用。它将与 imageview 完美配合。虽然可能有像填充这样的解决方案,但在某些情况下它们会失败。您可以使用 ImageView 实现该功能。我希望这能帮到您。

默认按钮

于 2013-02-23T09:46:13.747 回答
0

这可能是因为其他可绘制对象的画布可能有填充。

检查画布填充[不是您在 xml 中设置的填充,而是设计师在图像本身中设置的填充],并将其与您的新可绘制对象匹配,看看它们是否相同。他们应该是一样的。

于 2013-02-23T06:55:08.727 回答
0

试试我下面的布局,我做了一些相关的改变:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/LinearLayout1"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
   <TableLayout
      android:layout_width="fill_parent"
      android:layout_height="0dip"
      android:layout_weight="1"
      android:stretchColumns="*"
      android:weightSum="2" >
  <TableRow
    android:id="@+id/tableRowMem"
    android:weightSum="1" >
        <Button
            android:id="@+id/buttonA"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="0.5"
            android:text="A"/>

    <Button
        android:id="@+id/buttonB"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="0.5"
        android:text="B" />

</TableRow>

<TableRow
    android:id="@+id/tableRow1"
    android:weightSum="1" >

    <Button
        android:id="@+id/buttonC"
        android:layout_width="0dp"
        android:layout_weight=".5"
        android:layout_height="fill_parent"
        android:text="C" />

    <Button
        android:id="@+id/buttonD"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_height="fill_parent"
        android:background="@drawable/buttonred"
        android:text="D" />
</TableRow>
</TableLayout>
</LinearLayout>
于 2013-02-23T07:02:58.337 回答
0

为按钮添加填充。

android:padding="0dp"
于 2013-02-23T07:12:05.337 回答