Как удалить простыню вокруг кнопок в 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?