Android 设置背景时按钮变大-如何使其变小

Android 设置背景时按钮变大-如何使其变小,android,xamarin,button,xamarin.android,Android,Xamarin,Button,Xamarin.android,我想让我的按钮变窄或回到正常之前,它与背景设置 我知道使用背景色将在相同背景色的情况下工作,但我的问题是我在背景上使用选择器。当选择器设置为按钮背景时,它变得更宽。当我将背景色切换为背景色时,颜色会变得不同(例如,对我来说是紫色),按下按钮时颜色不会改变。通过设置负值或正值,填充不起作用。我还能做什么?我的目标是我的按钮在点击时会改变颜色,但它的高度是窄的/默认大小,就像包裹内容一样 这是我的按钮示例代码 <Button android:text="Add" android

我想让我的按钮变窄或回到正常之前,它与背景设置

我知道使用背景色将在相同背景色的情况下工作,但我的问题是我在背景上使用选择器。当选择器设置为按钮背景时,它变得更宽。当我将背景色切换为背景色时,颜色会变得不同(例如,对我来说是紫色),按下按钮时颜色不会改变。通过设置负值或正值,填充不起作用。我还能做什么?我的目标是我的按钮在点击时会改变颜色,但它的高度是窄的/默认大小,就像包裹内容一样

这是我的按钮示例代码

<Button
    android:text="Add"
    android:fontFamily="@string/fontFamily"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/btnInformantsAdd"
    android:gravity="center"
    android:textColor="@color/white"
    android:textSize="@dimen/textSizeCommon"
    android:background="@drawable/ButtonSelectorBlue"
    android:paddingTop="-10dp"
    android:paddingBottom="-10dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/marginTop1"
    android:layout_marginBottom="@dimen/marginTop1" />

选择器XML代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark_light" />
          <padding android:left="10dp"
             android:top="@dimen/paddingSide1"
             android:right="10dp"
             android:bottom="@dimen/paddingSide1"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>

  <item android:state_pressed="false">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark"/>
          <padding android:left="0dp"
             android:top="0dp"
             android:right="0dp"
             android:bottom="0dp"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>
</selector>

设置背景时,按钮变大

按钮没有变大


这是按钮的默认背景,你可以看到它周围是一个透明的颜色

但是,当您将按钮的背景更改为
buttonSelectBlue
文件时,没有透明颜色,因此您会认为它变大了

您可以看到以下代码:

<Button
    android:text="Add"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/btnInformantsAdd"
    android:gravity="center"
    android:textColor="#e7dbdb"
    android:textSize="20dp"
    android:background="@drawable/button_selector_blue"
    android:paddingTop="-10dp"
    android:paddingBottom="-10dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp" />

<Button
    android:text="Add"
    android:id="@+id/bt"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:gravity="center"
    android:textColor="#282828"
    android:textSize="20dp"
    android:onClick="OnClick"
    android:layout_gravity="center" />
最后,预览:

结果:


按钮的
minHeight
设置为48dp,以便轻松按下。不要改变这一点。如果你想让它们看起来很窄,可以使用一个
可绘制的(默认的可绘制就是这样做的)。Hi@EugenPechanec。我试图将minHeight设置为48,但什么也没发生。然后我把它设为10dp,只是为了测试一些东西,结果很神奇。如果我让它保持这样的状态,我的代码中会有麻烦吗?我尝试将文本大小更改为50,按钮大小与文本大小匹配,就好像wrap\u内容现在真的可以正常工作一样
minHeight=“48dp”
是默认值,这就是为什么没有任何更改。如果将其设置为较低的数字,则可单击的空间会更小。按钮的高度计算为
minHeight
的最大值和内容高度。但你不希望点击空间小于48dp,这将很难用手指点击。这就是为什么您应该保持
minHeight=“48dp”
。使用
可绘制按钮周围的
在实际可绘制按钮周围添加间距。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark_light" />
          <stroke android:color="#00000000"
                  android:width="10dp"/>
          <padding android:left="10dp"
             android:top="@dimen/paddingSide1"
             android:right="10dp"
             android:bottom="@dimen/paddingSide1"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>

  <item android:state_pressed="false">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark"/>
          <stroke android:color="#00000000"
                  android:width="10dp"/>
          <padding android:left="0dp"
             android:top="0dp"
             android:right="0dp"
             android:bottom="0dp"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>
</selector>