Кнопки Android имеют нежелательный запас

#android #android-layout #button #margin

#Android #android-макет #кнопка #маржа

Вопрос:

Я написал тестовое приложение, чтобы лучше описать мою проблему. Я начал новый проект Android с этим действием:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.jannevers.myapplication.MainActivity">

<Button
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</RelativeLayout>
 

Теперь первая проблема заключается в том, что кнопка на самом деле не заполняет родительский элемент, у нее есть запас (см. Скриншот):

введите описание изображения здесь

Я могу обойти это, сделав кнопку больше, чем она должна быть.

Но тогда вторая проблема заключается в том, что запас одинаков на большинстве устройств, но не на всех. Например, на Samsung Galaxy S6 Edge запаса почти нет (см. Скриншот):

введите описание изображения здесь

Это действительно странно, кто-нибудь знает решение?

Комментарии:

1. вы можете попытаться переопределить android:margin="0" в своем относительном макете.

2. ничего не меняет

3. Макет находится внутри фрагмента или действия?

4. это не поле и не отступ внутри кнопки, вы можете легко воспроизвести проблему, и очевидно, что кнопка соответствует макету, но изображение кнопки не соответствует виду кнопки, некоторые могут сказать, что это из-за встроенной тени кнопки или чего-то еще, — однако вы можете использоватьпользовательский фон 9patch для вашей кнопки, и он будет соответствовать представлению.

5. да, кнопка выполняет макет, запас не совсем правильное слово. Хм, я хотел бы использовать стандартный фон с его нажатыми состояниями, но, возможно, использование пользовательского фона — единственный способ.

Ответ №1:

Используйте style="?android:attr/borderlessButtonStyle"

 <Button
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    style="?android:attr/borderlessButtonStyle"/>
 

Комментарии:

1. хм, нет, мне не нужна кнопка без полей. Кнопка должна иметь границы, но не с «запасом»

2. @SJ.Doe это пространство не является запасом. его тень границ. вы можете создать границу кнопки.

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

Ответ №2:

Проверьте, если в вашем style.xml существует правило о полях макета, подобное этому:

 <item name="android:layout_margin">10dp</item>
 

Комментарии:

1. нет, это новый проект Android Studio. styles.xml содержит только AppTheme с colorPrimary, colorPrimaryDark, colorAccent