- Как уменьшить внутренний отступ вокруг текста в объекте кнопки Android?
- 5 ответов
- Как правильно удалить отступы (или поля?) Вокруг кнопок в Android?
- Когда кнопка не нажата
- Когда кнопка нажата
- 12 ответов
- Как убрать отступы вокруг кнопок в Android?
- 17 ответов
- Задний план
- Решение
- Как убрать отступы вокруг кнопок в Android?
- Задний план
- Решение
Как уменьшить внутренний отступ вокруг текста в объекте кнопки Android?
Итак, на данный момент у меня есть кнопка, которая выглядит как первое изображение выше. Как уменьшить отступ вокруг текста внутри самой кнопки (чтобы он больше походил на второе изображение)?
Ширина и высота макета задаются как:
Форма нестандартного стиля имеет параметры «
Остальное — это просто атрибуты цвета и значения радиусов.
Чтобы было понятно, я хочу, чтобы рамка кнопки приближалась к тексту «Войти».
Мы очень ценим любую помощь и отзывы. Спасибо.
5 ответов
Мне потребовалась целая вечность, чтобы найти это, но «отступы» вокруг текста на кнопке на самом деле вовсе не отступы. Стиль Widget.Button по умолчанию включает свойство minHeight. Изменение minHeight на кнопке позволит вам настроить отступы должным образом.
Вы можете использовать стиль Без полей в AppCompatButton , как показано ниже. Также используйте цвет фона, который вам нравится.
Если вам нужен отступ сверху и снизу меньшего размера, используйте это:
Попробуйте это в своем собственном файле shape.xml
Также вы можете внести изменения в xml вашей кнопки
В библиотеке компонентов материала MaterialButton имеет стиль по умолчанию с insetBottom и insetTop со значением 6dp .
Источник
Как правильно удалить отступы (или поля?) Вокруг кнопок в Android?
В настоящее время у меня есть следующая нижняя кнопка входа в систему.
Когда кнопка не нажата
Когда кнопка нажата
XML выглядит так
Я хотел бы удалить отступы (или я должен назвать это поле? Пожалуйста, обратитесь к моему самому нижнему разделу p / s) вокруг кнопки, когда она нажата.
Это не работает и не имеет никакого эффекта.
Нет больше отступов при нажатии. Тем не менее, материал, разработанный пресс-визуальный эффект исчезнет тоже.
Могу ли я узнать, каков наилучший способ убрать отступы кнопок при нажатой клавише, но при этом сохранить материал с разработанным нажатием визуальным эффектом?
Я действительно не знаю, должен ли я назвать это отступом или полем. Чего я хотел бы добиться, так это то, что когда мы нажимаем на нижнюю область, изменение визуального эффекта при нажатии должно охватывать всю область нижней полосы 100% ( @+id/sign_in_bottom_nav_bar ) вместо текущей области нижней полосы 95%.
12 ответов
Результат по API 19:
Результат по API 21:
Заполнение и поле могут быть результатом использования исходных ресурсов кнопки.
Таким образом, вы можете попытаться изменить используемые ресурсы, используя селектор:
Это изменило бы изображения / формы по умолчанию для ваших кнопок, так что вы можете попробовать использовать drawables и установить каждый элемент в drawable. Рисуемым является либо растровое изображение, либо XML-файл (файл стиля), определяющий внешний вид кнопки в ее текущем состоянии. Я предполагаю, что все еще есть некоторые встроенные стили, даже если вы сами установили стиль кнопки. Это может быть потому, что вы не используете пользовательскую тему. Таким образом, проблема также может быть решена путем определения
Где myNewTheme — ваша тема, и у нее должны быть какие-либо родители ( parent=»» не должно быть определено).
Возьмите любую заданную тему (разработанную Google / Android, например, Theme.AppCompat. [Name]), она также поставляется с buttonStyle. Это часть Theme.Holo.Light:
Как видите, эта тема определяет, как ваши кнопки будут выглядеть / работать в основных функциях. Вы можете переопределить его части, но вы не переопределили важные части (например, buttonStyle и тому подобное). Так что, если вы создаете новую тему самостоятельно, стилизуете ее по своему вкусу и устанавливаете тему (используя theme = «themename»), и эта тема не наследует никакой темы, вы должны иметь возможность стилизовать кнопки по своему вкусу, не беспокоясь о стилях по умолчанию в теме
Вызов padding / margin = «0dp» не поможет. Нарисованный по умолчанию объект, определенный темой, имеет это в кнопке «Отрисовка», что означает, что вы не можете изменить его. Таким образом, вы должны либо изменить стиль кнопки, либо полностью изменить тему. Убедитесь, что у темы нет родителей, потому что многие темы определяют стиль кнопки. Вы не хотите, чтобы стиль кнопки определялся темой.
Я бы посоветовал вам взглянуть на этот только в дело прежде всего.
Затем, если вы не работаете, я бы предложил вам создать свой собственный стиль (например, предложенный azizbekian), используя android xml drawables и нарисованные состояния для различения нажатых / не нажатых.
Я думаю, что использование вашего собственного стиля может быть лучшим ответом, так как это даст вам больше контроля над тем, как отображается ваше приложение, но использование тем и стилей по умолчанию для Android также позволяет пользователю иметь собственные стили, что является хорошей идеей. Однако вы не можете протестировать каждый пользовательский стиль, поэтому вы не можете проверить, правильно ли будет отображаться ваше приложение на ВСЕХ пользовательских стилях, и, следовательно, могут возникнуть проблемы с некоторыми.
Попробовав много решений, я наконец пришел к выводу, что с помощью одного тега мы не сможем этого достичь. чтобы удалить это нежелательное пространство вокруг кнопки, мое решение, как показано ниже:
Я действительно не знаю, должен ли я назвать это отступом или полем.
Кнопка определяет высоту поверхности для обеспечения визуальной обратной связи в ответ на касание. Это один из двух отзывов, используемых для поверхностной реакции ; первый из которых — волновой эффект. Например, поднятая кнопка имеет высоту состояния покоя 2dp и высоту нажатого состояния 8dp (см. Поднятую кнопку в разделе Shadows). Кнопка встречает палец, когда он касается поверхности.
Могу ли я узнать, каков наилучший способ убрать отступы кнопок при нажатой клавише, но при этом сохранить материал с разработанным нажатием визуальным эффектом?
Отвечая на первую часть, я не верю, что у вас есть весь дизайн материала, если вы хотите устранить эффект повышения поверхности.
В любом случае, вот как убрать визуальную обратную связь по высоте:
Добавьте файл аниматора button_raise.xml в каталог аниматор в каталоге res со следующим кодом:
Обратитесь к вновь созданному аниматору в кнопке, используя свойство stateListAnimator :
Надеюсь это поможет.
1. добавить файл ресурсов для рисования с именем возможно button_background.xml
2. Используйте button_background.xml в качестве фона кнопки, готово!
Установите фон Button как android:background=»?selectableItemBackground»
Лучшее решение в эти дни — просто использовать MaterialButton вместо Button .
Примечание: MaterialButton визуально отличается от Button и AppCompatButton. Одно из основных отличий заключается в том, что AppCompatButton имеет вставку 4dp с левой и правой сторон, а у MaterialButton — нет. Чтобы добавить вкладку в соответствии с AppCompatButton, установите для android: insetLeft и android: insetRight на кнопке значение 4dp или измените интервал на родительском макете кнопки.
При замене кнопок в приложении на MaterialButton вы должны проверить эти изменения на предмет различий в размерах и размерах.
Шаг 1: Поместите приведенный ниже код в styles.xml
Шаг 2. Создайте новый XML-файл в папке drawables и добавьте следующий код: я назвал свой XML-файл button_prime.xml.
Шаг 3: Используйте стиль и рисунок в вашей кнопке следующим образом.
В библиотеке поддержки версии 7 все стили фактически уже определены и готовы к использованию, для стандартных кнопок доступны все эти стили. Таким образом, вы можете установить стиль кнопок следующим образом.
Чтобы узнать подробнее о стиле кнопок, проверьте этот ответ
Я думаю, что вы также этот ответ также проверите. Я надеюсь, что вы получите свое решение.
Я прошел через то, что вы проходите. Короче говоря, вы просто не можете сделать это чисто с одним тегом , обеспечивая обратную совместимость.
Самый простой и наиболее распространенный метод — использовать подложку вокруг .
Код кнопки .
Везде, где вам нужно использовать кнопку, вы используете этот полный код.
Вот разбивка:
- События OnClick будут подключены к myButton .
- Управляйте размерами вашей кнопки, изменяя атрибуты myButtonUnderlay .
- В myButton , android:background=»?attr/selectableItemBackgroundBorderless» . Это сделает ее прозрачной кнопкой с только текстом и обратно совместимой рябью.
- В myButtonUnderlay вы будете выполнять все другие фоновые приложения, такие как установка цвета кнопки, полей, отступов, границ, градиентов, теней и т. Д.
- Если вы хотите манипулировать видимостью кнопки (программной или нет), вы делаете это в myButtonUnderlay .
Примечание. . Для обеспечения обратной совместимости убедитесь, что вы используете
android:background=»?attr/selectableItemBackgroundBorderless» и НЕ
Я думаю, что лучшее решение для этого — создать свой собственный Ripple Effect . Заполнение при нажатии кнопки соответствует стандартному Ripple Effect компоненту.
Или вы можете попробовать изменить стиль вашей кнопки на style=»?android:textAppearanceSmall»
Помните: этот эффект отображается только для Android Lollipop (API 21) или выше.
Как просто, используйте свойство inset , например:
Источник
Как убрать отступы вокруг кнопок в Android?
В моем приложении для Android у меня есть такой макет:
В превью и на телефоне это выглядит так:
Как вы можете видеть на кнопке в нижней части, там есть отступы.
Как я могу избавиться от этого и позволить кнопке полностью заполнить нижнюю область?
17 ответов
Для меня проблема оказалась в minHeight и minWidth в некоторых темах Android.
В элементе Button добавьте:
Или в стиле вашей кнопки:
Мое решение было установлено на 0 для свойств insetTop и insetBottom.
Это не отступы, это тень вокруг кнопки на ее фоне, которую можно рисовать. Создайте свой собственный фон, и он исчезнет.
Обходной путь может заключаться в том, чтобы попытаться использовать значения -ve для полей, как показано ниже:
Это заставит это пространство исчезнуть. Я имею в виду, что вы можете выбрать соответствующее значение dip , которое заставит его исчезнуть. У меня это сработало. Надеюсь, это сработает для вас.
Для MaterialButton добавьте свойства ниже, он будет работать отлично
Для удаления отступов вокруг кнопки переключения нам нужно установить minWidth и minHeight 0dp. android:minWidth=»0dp» android:minHeight=»0dp»
Установите для своего файла с возможностью рисования атрибут кнопки, например: android:button=»@drawable/toggle_selector»
Ниже мой файл toggle_selecter.xml
Я новичок в Android, но у меня была аналогичная ситуация. Я сделал то, что предложил @Delyan, а также использовал android: background = «@ null» в файле макета xml.
У меня была такая же проблема, и, похоже, это из-за цвета фона кнопки. Попробуйте изменить цвет фона на другой цвет, например:
И посмотрите, работает ли это. Затем вы можете определить стиль , если хотите, чтобы кнопка использовалась.
В наборе XML кнопки android:includeFontPadding=»false»
Это не отступы, а тень от фона, которую можно рисовать, или проблема с minHeight и minWidth .
Если вам по-прежнему нужен приятный эффект пульсации, вы можете создать свой собственный стиль кнопки, используя ?attr/selectableItemBackground :
И примените его к кнопке:
Кажется, это не отступы, поля или минимальная высота / ширина. При установке android:background=»@null» кнопка теряет анимацию касания, но оказывается, что установка фона на что-либо вообще исправляет эту границу.
В настоящее время я работаю с:
Стандартная кнопка не должна использоваться при полной ширине , поэтому вы испытываете это.
Задний план
Если вы посмотрите на Material Design — Button Style вы увидите, что кнопка имеет область щелчка высотой 48dp, но по какой-то причине будет отображаться как 36dp высоты.
Это фоновый контур, который вы видите, который не будет охватывать всю область самой кнопки.
Он имеет закругленные углы и некоторые отступы, и предполагается, что он сам по себе кликабелен, оборачивает содержимое и не охватывает всю ширину внизу экрана.
Решение
Как упоминалось выше, вам нужен другой фон . Не стандартная кнопка, а фон для выбираемого элемента с этим приятным эффектом ряби.
Для этого варианта использования есть атрибут темы ?selectableItemBackground , который вы можете использовать для своего фона (особенно в списках).
Он добавит стандартную рябь платформы (или некоторый список состояний цвета на 2
Придайте кнопке индивидуальный фон: @ drawable / material_btn_blue
Вы можете использовать стиль Без полей в AppCompatButton , как показано ниже. и используйте с ним android: background .
style = «@ style / Widget.AppCompat.Button.Borderless.Colored»
Вы также можете сделать это с помощью параметров layout_width(height) .
Например. Я удалил верхнее и нижнее пространство кодом android:layout_height=»18dp» .
После нескольких часов поиска нескольких ответов я наконец нашел решение, которое не использует другой элемент, не управляет minHeight или minWidth , и даже не оборачивает Button вокруг RelativeLayout .
Главный вывод здесь — установка переднего плана вместо фона, как это предусмотрено во многих ответах. Изменение самого фона на selectableItemBackground просто перезапишет любые изменения, внесенные вами в цвет / фон кнопки, если таковые были.
Изменение переднего плана дает вам лучшее из обоих миров: избавьтесь от «невидимых» отступов и сохраните дизайн кнопки.
Источник
Как убрать отступы вокруг кнопок в Android?
В моем приложении для Android у меня есть этот макет:
В превью и на телефоне это выглядит так:
Как вы можете видеть на кнопке в нижней области, там есть некоторые отступы.
Как мне избавиться от этого и позволить кнопке полностью заполнить нижнюю область?
Для меня проблема оказалась minHeight и minWidth на некоторых темах Android.
В элемент Button добавьте:
Или в стиле вашей кнопки:
Мое решение было установлено в 0 свойства insetTop и insetBottom.
Это не заполнение, это тень вокруг кнопки на ее фоне. Создайте свой собственный фон, и он исчезнет.
Обходной путь может заключаться в том, чтобы попытаться использовать -ve значения для полей, как показано ниже:
Это заставит это пространство исчезнуть. Я имею в виду, что вы можете выбрать подходящее dip значение, чтобы оно исчезло. Это сработало для меня. Надеюсь, это работает для вас.
Для удаления отступов вокруг кнопки переключения нам нужно установить minWidth и minHeight 0dp. android:minWidth=»0dp» android:minHeight=»0dp»
установите для вашего нарисованного файла атрибут кнопки, например: android:button=»@drawable/toggle_selector»
Ниже мой toggle_selecter.xml файл
Я новичок в Android, но у меня была похожая ситуация. Я сделал то, что предложил @Delyan, а также использовал android: background = «@ null» в файле макета xml.
В наборе XML кнопки android:includeFontPadding=»false»
У меня была такая же проблема, и кажется, что это из-за цвета фона кнопки. Попробуйте изменить цвет фона на другой, например:
и посмотреть, если это работает. Затем вы можете определить стиль, если хотите использовать кнопку.
Снять верхнюю и нижнюю прокладку
Чтобы удалить левый и правый отступ
Это не отступы, а или тень фона или проблема с minHeight и minWidth .
Если вы по-прежнему хотите получить приятный волновой эффект, вы можете создать свой собственный стиль кнопок, используя ?attr/selectableItemBackground :
И примените его к кнопке:
Кажется, это не отступы, отступы или минимальная высота / ширина. Установка android:background=»@null» кнопки теряет свою сенсорную анимацию, но оказывается, что установка фона на что-либо вообще исправляет эту границу.
В настоящее время я работаю с:
Дайте вашей кнопке собственный фон: @ drawable / material_btn_blue
Вы также можете сделать это с layout_width(height) параметрами.
Например, я удалил верхнее и нижнее пространство с android:layout_height=»18dp» кодом.
Стандартная кнопка не должна использоваться на полную ширину, поэтому вы испытываете это.
Задний план
Если вы посмотрите на Material Design — Button Style, то увидите, что кнопка имеет область щелчка высотой 48dp, но по какой-то причине будет отображаться как 36dp высоты.
Это фоновый контур, который вы видите, который не будет охватывать всю область самой кнопки.
Он имеет закругленные углы и некоторые отступы, и предполагается, что он сам по себе кликабелен, оборачивает содержимое и не охватывает всю ширину в нижней части экрана.
Решение
Как уже упоминалось выше, вам нужен другой фон . Не стандартная кнопка, а фон для выбираемого элемента с этим приятным эффектом ряби.
Для этого варианта использования есть ?selectableItemBackground атрибут темы, который вы можете использовать для фона (особенно в списках).
Это добавит стандартную рябь платформы (или некоторый список состояний цвета на — Mohammad7G
источник
После нескольких часов копаться несколько ответов я , наконец , нашел решение , которое не использует другой элемент, манипулировать minHeight или minWidth , или даже оборачивать Button вокруг RelativeLayout .
Основной вывод здесь — установка переднего плана, а не фона, как предусмотрено во многих ответах. Изменение самого фона на selectableItemBackground просто перезапишет любые изменения, сделанные вами в цвете / фоне кнопки, если таковые имеются.
Изменение переднего плана дает вам лучшее из обоих миров: избавьтесь от «невидимого» отступа и сохраните дизайн вашей кнопки.
Вы можете использовать стиль без полей в AppCompatButton, как показано ниже. и использовать Android: фон с ним.
Источник