在我的Android应用程序中,我有这样的布局:

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical">

    <fragment
         android:id="@+id/map"
         android:layout_width="match_parent"
         android:layout_height="0dp" 
         android:layout_weight="1" 
         class="com.google.android.gms.maps.SupportMapFragment"/>

    <Button
        android:id="@+id/button_back"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="CloseActivity"
        android:padding="0dp"
        android:text="@+string/back" />

</LinearLayout>

在预览和在手机上,它看起来是这样的:

正如你在底部区域的按钮上看到的,那里有一些填充。

我怎么能摆脱它,让按钮完全填满底部区域?


当前回答

我也遇到了同样的问题,似乎是因为按钮的背景颜色。试着把背景色换成另一种颜色,例如:

android:background="@color/colorActive"

看看它是否有效。然后,如果您想要使用按钮,可以定义一个样式。

其他回答

经过几个小时的深入研究,我终于找到了一个解决方案,不使用不同的元素,操纵minHeight或minWidth,甚至包裹按钮周围的RelativeLayout。

<Button
    android:foreground="?attr/selectableItemBackground"
    android:background="@color/whatever" />

这里的主要收获是前景的设置,而不是许多答案所规定的背景。将背景本身更改为selectableItemBackground将覆盖您对按钮的颜色/背景所做的任何更改(如果有的话)。

改变前景可以让你两全其美:去掉“看不见的”填充,保留按钮的设计。

这不是填充,这是按钮周围的阴影在它的背景可绘制。创建你自己的背景,它就会消失。

你可以像下面这样在AppCompatButton中使用Borderless style。并使用android:background与之配合。

style=“@style/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" />

输出:

一种解决方法是尝试使用-ve值作为边距,如下所示:

<Button
    android:id="@+id/button_back"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="CloseActivity"
    android:padding="0dp"
    android:layout_marginLeft="-5dip"
    android:layout_marginRight="-5dip"
    android:layout_marginTop="-5dip"
    android:layout_marginBottom="-5dip"
    android:text="@string/back" />

它会让空间消失。我的意思是,你可以选择合适的倾角值,让它消失。这对我很管用。希望这对你有用。

给你的按钮一个自定义背景:@drawable/material_btn_blue