如何减少Android按钮对象中文本周围的内部填充?

时间:2013-05-06 07:43:00

标签: java android xml mobile user-interface

Example buttons

所以,目前我有一个看起来像上面第一张图片的按钮。如何减少按钮本身内部文本的填充(看起来更像第二个图像)?

布局宽度和高度设置为:

android:layout_width="match_parent"
android:layout_height="wrap_content"

自定义样式形状具有参数“

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">

其余只是颜色属性和半径值。

为了说清楚,我希望按钮的框架能够更紧密地拥抱“登录”文本。

非常感谢所有帮助和反馈。感谢。

5 个答案:

答案 0 :(得分:192)

我花了很长时间才找到这个,但按钮中文本周围的“填充”根本不是填充物。默认的Widget.Button样式包含minHeight属性。更改按钮上的minHeight将允许您按预期调整填充。

<Button
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/test"
        android:textColor="@color/black"
        android:minHeight="40dip"/>


<style name="Widget.Holo.Button" parent="Widget.Button">
    <item name="android:background">@android:drawable/btn_default_holo_dark</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    <item name="android:textColor">@android:color/primary_text_holo_dark</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>

答案 1 :(得分:6)

在“材料组件库”中,MaterialButton的默认样式为insetBottominsetTop,其值为6dp

您可以在布局中更改它们:

  <com.google.android.material.button.MaterialButton
      android:insetTop="0dp"
      android:insetBottom="0dp"
      ../>

或采用样式:

 <style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
 </style>

enter image description here enter image description here

答案 2 :(得分:4)

在自定义shape.xml文件中尝试此操作

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="1dp"
android:padding="1dp">

您也可以在按钮的xml中进行更改

android:layout_width="wrap_content"
android:layout_height="wrap_content"

答案 3 :(得分:0)

如果您想要更小的顶部和底部填充,请使用:

 android:paddingTop="2dp"
 android:paddingBottom="2dp"

答案 4 :(得分:0)

您可以在 AppCompatButton 中使用 Borderless 样式,如下所示。还要使用您喜欢的背景颜色。

Widget.AppCompat.Button.Borderless.Colored

按钮代码

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_visa_next"
        android:background="@color/colorPrimary"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spacing_normal"
        android:text="@string/next"
        android:textColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

输出:

enter image description here