13

我想删除按钮视图中文本周围的填充。第一个屏幕截图是我要实现的结果,第二个屏幕截图是最先进的。

在此处输入图像描述

在此处输入图像描述

当然,我已经定义了一个自定义的可绘制对象来获取按钮的外观。但即使我将填充属性设置为 0dp,结果也不会改变。

请问有什么建议吗?

编辑 这是按钮的xml代码

<Button
        android:id="@+id/btnCancel"
        style="@style/dark_header_button"
        android:layout_width="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_height="wrap_content"
        android:includeFontPadding="false"
        android:padding="0dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="@android:string/cancel" />

这是样式xml文件:

<style name="dark_header_button">
    <item name="android:background">@drawable/bkg_dark_header_button</item>
    <item name="android:shadowDy">-1</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowRadius">1</item>
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#ffffff</item>
</style>

这是可绘制的 xml 文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true">
    <shape>

        <corners android:radius="10dp" />

        <gradient 
            android:angle="90" 
            android:endColor="#060606"
            android:startColor="#707070"
            android:type="linear" />

    </shape>
</item>
<item>
    <shape>

        <corners android:radius="10dp" />

        <gradient 
            android:angle="90" 
            android:endColor="#707070" 
            android:startColor="#060606" 
            android:type="linear" />

        <stroke 
            android:width="0.5dp" 
            android:color="#2b2b2b" />

    </shape>
</item>


</selector>
4

3 回答 3

56

它实际上不是填充,但主题是为按钮小部件设置 minHeight 和 minWidth。您可以通过在 xml 中的按钮上设置以下内容来完全删除此效果而无需更改主题:

android:minHeight="0dp"
android:minWidth="0dp"

因此,这也意味着您可以为不同的效果使用不同的设置,0dp 只是完全消除此效果的一个示例。

于 2014-07-28T10:26:23.450 回答
19

您可以尝试使用android:includeFontPadding。将其设置为假。还将填充设置为0。

于 2013-10-07T14:09:11.950 回答
1

按钮文本不需要填充,默认情况下位于按钮中心。我认为您android:theme="@android:style/Theme.Black.NoTitleBar"在清单文件中使用了 ,请将其删除并使用本机应用程序主题并尝试一下。

于 2013-10-07T14:19:36.307 回答