在我的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>

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

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

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


当前回答

Add these properties:

    android:insetTop="0dp"
    android:insetBottom="0dp"
    android:minWidth="0dp"
    android:minHeight="0dp"
    android:padding="0dp"

其他回答

一种解决方法是尝试使用-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" />

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

对于MaterialButton,添加下面的属性,它将完美地工作

<android.support.design.button.MaterialButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:insetTop="0dp"
    android:insetBottom="0dp"/>

我的解决方案是将insetTop和insetBottom属性设置为0。

<android.support.design.button.MaterialButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="@string/view_video"
        android:textColor="@color/white"/>

一个标准的按钮不应该在全宽度使用,这就是为什么你会遇到这种情况。

背景

如果你看一下材质设计-按钮样式,你会看到一个按钮有一个48dp高度的点击区域,但会显示为36dp高度…一些原因。

这是你看到的背景轮廓,它不会覆盖按钮本身的整个区域。 它有圆角和一些填充,应该是可点击的本身,包装其内容,而不是跨越整个宽度在你的屏幕底部。

解决方案

如上所述,你需要的是一个不同的背景。不是一个标准的按钮,而是一个具有良好涟漪效应的可选择项目的背景。

对于这个用例,有?selectableItemBackground主题属性,您可以将其用于您的背景(特别是在列表中)。 它将添加一个平台标准波纹(或一些颜色状态列表< 21),并将使用您当前的主题颜色。

对于你的用例,你可以使用下面的代码:

<Button
    android:id="@+id/sign_in_button"
    style="?android:attr/buttonBarButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Login"
    android:background="?attr/selectableItemBackground" />
                   <!--  /\ that's all -->

如果你的视图是唯一的并且横跨整个屏幕,也不需要添加布局权重

如果你对你的背景应该是什么样子有不同的想法,你必须自己创建一个自定义的绘图,并管理那里的颜色和状态。

这个问题的答案复制:如何正确地删除填充(或空白?)在Android的按钮?

对< androidx.appcompat.widget.AppCompatButton >

           <androidx.appcompat.widget.AppCompatButton
                .
                .
                android:minHeight="0dp"
                android:minWidth="0dp" 
               >

            </androidx.appcompat.widget.AppCompatButton>