Intereting Posts
Android Navigation Drawer (вызывающие действия) с AbstractMainActivity CustomTabs показывает ERR_UNKNOWN_URL_SCHEME после перенаправления 302 Изогнутая прямоугольная форма андроида Adb получил два одинаковых серийных номера при подключении к двум смартфонам Задать логотип панели инструментов в XML Что касается сериализации, serialVersionUID и несовместимого класса Как программно открывать настройки док-станции? Обнаружение ошибки веб-просмотра и показа сообщений Невозможно захватить «документ. (…) .tagName» в телефонной запинке внутри inAppBrowser Flip анимация в Android для настройки транзакции фрагмента «z» индекс или камера Как отключить кнопку «Недавние задачи / приложения» Выпадающие меню HTML Select не работают в веб-обозревателе Android Задание зависимостей Maven в build.gradle не работает Предварительный просмотр макетов в Studio Studio для Listview + Gridview Пользовательский дочерний класс приложения в Mono для Android

Кнопка Borderless на Pre-Lollipop с библиотекой поддержки

Я делаю безграничную плоскую кнопку, используя библиотеку поддержки (23.0.1). Он работает нормально на Lollipop. Однако на пре-Lollipop, когда я colorButtonNormal кнопку, его цвет меняется на colorButtonNormal как на обычную кнопку.

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

Вот скриншот от Lollipop и Pre-lollipop.

Первое нормальное поведение на Lollipop: кнопка без полей в нормальном состоянии и сфокусированное состояние на Lollipop

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

Не нормальное поведение на Pre-Lollipop ( цвет желания серый, как указано выше, но это не так ): кнопка без полей в нормальном состоянии и сфокусированное состояние на Pre-Lollipop Введите описание изображения здесь

тема

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> //other stuff <item name="colorButtonNormal">@color/orangeColor</item> <item name="buttonBarButtonStyle">@style/BorderlessButtonStyle</item> </style> <style name="BorderlessButtonStyle" parent="Widget.AppCompat.Button.Borderless"> <item name="android:textColor">@color/blueTextColor</item> </style> 

И теперь кнопка в макете:

 <Button android:id="@+id/btnForgotPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/forgot_your_password" style="?attr/buttonBarButtonStyle" /> 

Любой способ заставить его писать с помощью темы и стилей AppCompat без создания отдельных Drawables.

Solutions Collecting From Web of "Кнопка Borderless на Pre-Lollipop с библиотекой поддержки"

Кнопка Borderless Button работает как с версией Post, так и с Pre Lollipop с поддержкой библиотеки, но есть небольшая разница между цветом onPressed.

Pre-Lollipop: по умолчанию onPressed цвет такой же, как цвет кнопки по умолчанию, заданный с помощью colorButtonNormal .

Lollipop: По умолчанию onPressed цвет светло-серый, что идеально.

Вы можете сделать Borderless Button следующим образом:

 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Name" style="@style/Widget.AppCompat.Button.Borderless"/> 

Теперь, если вы хотите иметь тот же цвет onPressed для всех версий, вы можете установить colorControlHighlight в новую тему и установить эту тему в Button.

 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Name" android:theme="@style/BorderlessButton" style="@style/Widget.AppCompat.Button.Borderless"/> 

И тема в вашем стиле:

 <style name="BorderlessButton" parent="Theme.AppCompat.Light"> <item name="colorControlHighlight">YOUR COLOR</item> </style> 

Обновлено : вы можете использовать атрибут android:theme для представления с Android 5.0 Lollipop и AppCompat v22.1.0 (и выше).

Почему вы беспокоитесь, что некоторые вещи просто идут с этим и становятся свободными

 <Button android:id="@+id/btnForgotPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/forgot_your_password" android:background="@drawable/abc_btn_borderless_material" /> 

И теперь небрежно относимся к апи

Добавление style="?attr/borderlessButtonStyle" к Button отлично работало для меня.

Вы используете андроид, реализованный стиль «buttonBarButtonStyle», поскольку вы вызываете его через ?atr – используйте style="@style/BorderlessButtonStyle вместо этого.

Изменить. Оставьте свой xml как есть, но вы можете изменить его на свое желаемое поведение следующим образом:

 AppCompatButton button = (AppCompatButton) findViewById(R.id.btnForgotPassword); ColorStateList colorStateList = new ColorStateList(new int[][] {{0}}, new int[] {0xFF969696}); //969696 is your wanted grey color, just change it button.setSupportBackgroundTintList(colorStateList);