Я просто проверял рекомендации по дизайну и задавался вопросом о кнопках без полей. Я вытаращил глаза и попытался найти в источнике, но не смог собрать его самостоятельно. Это обычный виджет Button, но вы добавляете собственный стиль (по умолчанию для Android)? Как сделать эти кнопки без полей (конечно, вы можете сделать фон пустым, но тогда у меня нет разделителя)?
Здесь ссылки на рекомендации по дизайну:
android
layout
button
borderless
KarlKarlsom
источник
источник
Ответы:
Чтобы устранить некоторую путаницу:
Это делается в два шага: Установка атрибута фона кнопки на android: attr / selectableItemBackground создает кнопку с обратной связью, но без фона.
Линия, отделяющая кнопку без полей от остального макета, выполняется представлением с фоном android: attr / dividerVertical
Для лучшего понимания вот макет для комбинации кнопок ОК / Отмена без полей в нижней части экрана (как на правом рисунке выше).
источник
?android:attr/selectableItemBackground
для?attr/selectableItemBackground
и?android:attr/dividerVertical
для?attr/dividerVertical
?android:attr/dividerVerticalfor
а?attr/dividerVertical
также работает дляПросто добавьте в свой
Button
тег следующий атрибут стиля :источник: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless
Затем вы можете добавить разделители, как в ответе Карла .
источник
Поздний ответ, но много просмотров. Поскольку API <11 еще не умерли, для тех, кто заинтересован, это уловка.
Пусть ваша тара будет желаемого цвета (может быть прозрачной). Затем дайте своим кнопкам селектор с прозрачным цветом по умолчанию и некоторым цветом при нажатии. Таким образом, у вас будет прозрачная кнопка, но она будет менять цвет при нажатии (как на голограмме). Вы также можете добавить анимацию (например, голограмму). Селектор должен быть примерно таким:
И кнопка должна иметь
android:background="@drawable/selector_transparent_button"
PS: пусть у вас есть разделители в контейнере (
android:divider='@android:drawable/...
для API <11)PS [Новички]: вы должны определить эти цвета в values / colors.xml
источник
API Level 10
и дляAPI Level > 10
!Для тех, кому нужны кнопки без полей, но все еще анимированные при нажатии. Добавьте это в кнопку.
Если вам нужен разделитель / линия между ними. Добавьте это в линейный макет.
Резюме
источник
Для стиля материала добавьте
style="@style/Widget.AppCompat.Button.Borderless"
при использовании библиотеки AppCompat.источник
Из источника приложения iosched я придумал этот
ButtonBar
класс:Это будет то,
LinearLayout
что нужно для кнопок «ОК» и «Отмена», и будет обрабатывать их размещение в соответствующем порядке. Затем поместите это в макет, в котором вы хотите разместить кнопки:Это дает вам вид диалога с кнопками без полей. Вы можете найти эти атрибуты в разрешении во фреймворке.
buttonBarStyle
делает вертикальный разделитель и отступ.buttonBarButtonStyle
установлен какborderlessButtonStyle
для темы Holo, но я считаю, что это должен быть наиболее надежный способ ее отображения, поскольку платформа хочет ее отображать.источник
Посмотрите в тему атрибутов
buttonBarStyle
,buttonBarButtonStyle
иborderlessButtonStyle
.источник
buttonBarButtonStyle
я получаю исключение.E/AndroidRuntime(17134): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(17134): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x1030281 a=2 r=0x1030281}
Не знаю почему, но использованиеselectableItemBackground
творит чудеса.Вы также можете сделать кнопки без полей с помощью кода:
источник
android.R.attr.selectableItemBackground
требует API 21. Есть идеи, как это сделать в более ранних версиях?Для тех, кто хочет программно создавать кнопки без полей для API> = 8
источник
Другое решение, которое должно работать как на старой, так и на новой платформе Android, - это использовать
атрибут для просмотра кнопок. Но после добавления кнопки над строкой не будет сенсорной обратной связи.
Чтобы обеспечить обратную связь при касании, добавьте следующий код в класс Activity
Он отлично работает для меня.
источник
case MotionEvent.ACTION_CANCEL:
нижеcase MotionEvent.ACTION_UP:
.Для всех, кто все еще ищет:
унаследуйте собственный стиль для панелей кнопок Holo:
или Holo Light:
и для кнопок Holo без полей:
или Holo Light:
источник
Вот как вы программно создаете кнопку без полей (плоскую) без использования XML
источник
ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext);
и это не сработало. После добавления 2-го и 3-го параметра он работает!Используйте приведенный ниже код в своем XML-файле. Используйте android: background = "# 00000000", чтобы получить прозрачный цвет.
источник
Вы можете использовать библиотеку поддержки AppCompat для кнопки без полей.
Вы можете сделать кнопку без полей следующим образом:
Вы можете сделать цветную кнопку без полей следующим образом:
источник
По какой-то причине ни у меня,
style="Widget.Holo.Button.Borderless"
ниandroid:background="?android:attr/selectableItemBackground"
у меня не работало. Точнее,Widget.Holo.Button.Borderless
работал на Android 4.0, но не работал на Android 2.3.3. Что помогло мне в обеих версиях,android:background="@drawable/transparent"
и этот XML в res / drawable / transparent.xml:Обычная голова через стену подход.
источник
android:background="?android:attr/dividerVertical"
хитрость.Отличное слайд-шоу о том, как добиться желаемого эффекта от Googles Nick Butcher (начало со слайда 20). Он использует стандартный андроид
@attr
для стилизации кнопки и разделителя.источник
Добавив к верхнему ответу, вы также можете использовать представления с темно-серым цветом фона в линейном макете, например.
Если ваша линия горизонтальна, вы захотите установить высоту на 1dip и ширину, соответствующую родительской, и наоборот, если ваша линия вертикальная.
источник
Если вы хотите добиться того же программно:
(это C #, но его легко перевести на Java)
Соответствие
источник
Попробуйте этот код, чтобы программно удалить фоновый рисунок (@ drawable / bg), просто нам нужно указать null в качестве параметра.
источник