2015-01-22 3 views
10

Я использую тему AppCompat и я хочу установить атрибут MinHeight на моих кнопках:Как настроить стиль кнопки материала AppCompat?

<style name="Theme.MyTheme" parent="Theme.AppCompat"> 
    <item name="android:buttonStyle">@style/MyButtonStyle</item> 
</style> 

<style name="MyButtonStyle" parent="...?"> 
    <item name="android:minHeight">60dp</item> 
</style> 

Однако нет Widget.AppCompat.Button стиля, чтобы установить в качестве родителя для MyButtonStyle. Если я использую android:Widget.Button, то все мои кнопки выглядят как старый дерьмовый стиль. Я пробовал различные темы AppCompat, такие как TextAppearance.AppCompat.Button, но они не работают.

Оставляя родительскую тему для стиля кнопки, также вызывает правильную стилизацию кнопки.

Как настроить по умолчанию Theme.AppCompatbuttonStyle?

+0

Теперь они добавили кнопку: android.support.v7.widget.AppCompatButton – irvanjit

ответ

3

Вы можете Base.MyButtonStyle расширить android:Widget.Holo.Button по API 14+ (в res/values-v14/styles.xml) и android:Widget.Material.Button по API 21+ (в res/values-v21/styles.xml. Этот стиль будет меняться в зависимости от версии системы устройства. Поставьте платформы конкретных модификаций здесь.

Тогда есть MyButtonStyle расширить Base.MyButtonStyle и определить android:minHeight здесь (в res/values/styles.xml). Это относится ко всем платформам.

кнопки Вы можете затем использовать стиль MyButtonStyle.

В этом примере предполагается, что ваш минимальный SDK равен 14.

И да, нет стиля кнопки appcompat-v7 (ну, по крайней мере, пока нет).

EDIT

Это предполагает, что вы все в порядке с кнопкой Холо на платформах старше леденец. Он чувствует себя ненавязчивым, и если вы можете обойтись без рябь, это должно быть просто прекрасно. Если вы хотите рябь, я предлагаю вам Google для третьей библиотеки кнопок для леденцов.

+0

Спасибо. По какой-то причине я думал о том, чтобы установить тему кнопки на Холо, по какой-то причине не будет работать на 15-20, но, конечно же, она делает и дает желаемый результат. –

4

Чтобы ответить на мой собственный вопрос, он появляется AppCompat does not in fact supportButton виджет в настоящее время:

AppCompat обеспечивает подобное поведение на более ранних версиях Android для подмножества элементов интерфейса:

  • все предусмотренные Панель инструментов AppCompat (режимы действия и т. Д.)
  • Редактирование текста
  • Spinner
  • CheckBox
  • RadioButton
  • Switch (используйте новый android.support.v7.widget.SwitchCompat)
  • CheckedTextView

Единственный способ решения проблемы я вижу в том, чтобы воссоздать материал стиль кнопки из исходного кода Android, задача, которая выходит за рамки моего желания.

+5

Теперь он поддерживает 22.1.0 – Caipivara

+0

компилирует 'com.android.support:appcompat-v7:22.0.0' в сборке .gradle в Android Studio, похоже, не получает пакет. Как включить v22? – dowjones123

+1

Последняя версия appcompat действительно имеет кнопку: android.support.v7.widget.AppCompatButton – irvanjit

1

Пользовательская кнопка Стиль С AppCompat +22 в вашем styles.xml

<style name="Button.Tinted" parent="Widget.AppCompat.Button"> 
     <item name="colorButtonNormal">YOUR_TINT_COLOR</item> 
     <item name="colorControlHighlight">@color/colorAccent</item> 
     <item name="android:textColor">@android:color/white</item> </style> 

в вашем layout.xml

<Button 
     android:id="@+id/but_next" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/but_continue" 
     android:theme="@style/Button.Tinted" /> 
+0

Это был мой подход, пока я не заметил, что отключенные кнопки выглядят так же, как и активированные –

Смежные вопросы