107

示例按钮

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

布局宽度和高度设置为:

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">

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

为了清楚起见,我希望按钮的框架更靠近“登录”文本。

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

4

5 回答 5

253

我花了很长时间才找到它,但是按钮中文本周围的“填充”根本不是真正的填充。默认的 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>
于 2013-10-10T16:01:10.000 回答
15

在材质组件库中,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>

在此处输入图像描述在此处输入图像描述

于 2020-06-04T07:18:40.480 回答
5

在您的自定义 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"
于 2013-05-06T11:24:05.377 回答
2

如果你想要一个更小的顶部和底部填充,使用这个:

 android:paddingTop="2dp"
 android:paddingBottom="2dp"
于 2013-05-06T08:10:10.727 回答
0

更新:如果你想使用材质按钮:>

您可以使用 style="@style/Widget.MaterialComponents.Button.TextButton" 属性,将 insetTop 和 insetBottom 设置为 0dp。还设置 app:cornerRadius="0dp" 以获得与我给定图片相同的结果。

  <com.google.android.material.button.MaterialButton
        android:id="@+id/btnAddMorePassenger"
        style="@style/Widget.MaterialComponents.Button.TextButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/primary_variant"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="@string/add_passenger"
        android:textColor="@color/light"
        android:visibility="visible"
        app:cornerRadius="0dp"
        app:icon="@drawable/ic_profile_24dp"
        app:iconGravity="textStart"
        app:iconTint="@color/light"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/toolbar"
        tools:visibility="visible" />

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

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" />

输出:

在此处输入图像描述

于 2020-05-14T07:09:27.317 回答