Как удалить простыню вокруг кнопок в Android?

В моем приложении для 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>

В предварительном просмотре и на телефоне это выглядит так:

Как вы можете видеть на кнопке в нижней области, там есть прокладка.

Как я могу избавиться от этого, и пусть кнопка полностью заполнит нижнюю область?

Ответ 1

Для меня проблема оказалась minHeight и minWidth для некоторых тем Android.

В элементе Button добавьте:

<Button android:minHeight="0dp" android:minWidth="0dp" ...

Или в стиле кнопок:

<item name="android:minHeight">0dp</item>
<item name="android:minWidth">0dp</item>

Ответ 2

Это не дополнение, это тень вокруг кнопки в фоновом режиме. Создайте свой собственный фон, и он исчезнет.

Ответ 3

Обходной путь может заключаться в том, чтобы попытаться использовать значения -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" />

Это сделает это пространство равным нулю. Я имею в виду, что вы можете выбрать подходящее значение dip, которое заставляет его уйти. Это сработало для меня. Надеюсь, это сработает для вас.

Ответ 4

Для удаления прокладки вокруг кнопки переключения нужно установить minWidth и minHeight 0dp. android:minWidth="0dp" android:minHeight="0dp"

  <ToggleButton
        android:id="@+id/toggle_row_notifications"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="0dp"
        android:minHeight="0dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/_5sdp"
        android:textOn=""
        android:textOff=""
        android:background="@android:color/transparent"
        android:button="@drawable/toggle_selector"
        />

установите атрибут drawable file в качестве атрибута: android:button="@drawable/toggle_selector"

Ниже представлен мой файл toggle_selecter.xml

<?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:drawable="@drawable/notifications_toggle_on" 
                  android:state_checked="true"/>
            <item android:drawable="@drawable/notifications_toggle_off" 
                  android:state_checked="false"/>
     </selector>

Ответ 5

Я новичок в android, но у меня была аналогичная ситуация. Я сделал то, что предложил @Delyan, а также использовал android: background = "@null" в файле макета xml.

Ответ 6

Вы должны использовать атрибуты minHeight и minWidth в кнопке и убедиться в использовании padding

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

Ответ 7

У меня была такая же проблема, и кажется, что это из-за цвета фона кнопки. Попробуйте изменить цвет фона на другой, например:

android:background="@color/colorActive"

и посмотри, работает ли это. Затем вы можете определить стиль, если хотите использовать кнопку.

Ответ 8

В кнопке XML установлен android:includeFontPadding="false"

Ответ 9

Это не отступы, а или тень фона для рисования, или проблема с minHeight и minWidth.

Если вы все еще хотите получить приятный волновой эффект, вы можете создать свой собственный стиль кнопок, используя ?attr/selectableItemBackground:

<style name="Widget.AppTheme.MyCustomButton" parent="Widget.AppCompat.Button.Borderless">
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:layout_height">48dp</item>
    <item name="android:background">?attr/selectableItemBackground</item>
</style>

И примените его к кнопке:

<Button 
    style="@style/Widget.AppTheme.MyCustomButton"
    ... />

Ответ 10

Кажется, что это не прописная, маржа или минимальная/ширина. При установке android:background="@null" кнопка теряет сенсорную анимацию, но оказывается, что настройка фона на все исправления границы.


В настоящее время я работаю с:

minSdkVersion 19
targetSdkVersion 23

Ответ 11

Дайте вашей кнопке собственный фон: @drawable/material_btn_blue

Ответ 12

Мое решение было установлено в 0 свойства insetTop и insetBottom.

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

Ответ 13

Вы также можете сделать это с параметрами layout_width(height).

Например. Я удалил верхнее и нижнее пространство с кодом android:layout_height="18dp".

Ответ 14

Стандартная кнопка не должна использоваться на полную ширину, поэтому вы испытываете это.

Фон

Если вы посмотрите на Material Design - Button Style, вы увидите, что кнопка имеет область щелчка высотой 48dp, но по какой-то причине будет отображаться как 36dp высоты.

Это фоновый контур, который вы видите, который не будет охватывать всю область самой кнопки.
Он имеет закругленные углы и некоторые отступы, и предполагается, что он сам по себе кликабелен, оборачивает содержимое и не охватывает всю ширину внизу экрана.

Решение

Как уже упоминалось выше, вам нужен другой фон. Не стандартная кнопка, а фон для выбираемого элемента с этим приятным эффектом ряби.

Для этого варианта использования есть атрибут темы ?selectableItemBackground, который вы можете использовать для своих фонов (особенно в списках).
Он добавит стандартную рябь для платформы (или список некоторых цветов на & lt; 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 all -->

Также нет необходимости добавлять вес макета, если ваш вид является единственным и охватывает весь экран

Если у вас есть какое-то другое представление о том, как должен выглядеть фон, вам нужно самостоятельно создать собственный рисунок и управлять там цветом и состоянием.

Этот ответ скопирован из Вопроса: Как правильно удалить отступы (или поля?) Вокруг кнопок в Android?