2016-08-29 3 views
0

У меня есть проблемы, чтобы иметь хороший фон из AppCompatImageButton, просто чтобы попробовать я сравниваю эти два макета:ImageButton цвет фона с AppCompat

<android.support.v7.widget.AppCompatImageButton 
     android:id="@+id/imageButtonI" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@string/icolor" 
     android:tint="@color/accent" 
     app:srcCompat="@drawable/magnify"/> 

    <ImageButton 
     android:id="@+id/imageButtonS" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@string/scolor" 
     android:tint="@color/accent" 
     android:src="@drawable/magnify"/> 

и файл стилей:

<style name="AppBaseTheme" parent="android:Theme.Material"> 
    <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:colorPrimaryDark">@color/primaryDark</item> 
    <item name="android:colorAccent">@color/accent</item> 
</style> 

Как вы можете видеть из этого изображения, фон ImageButton является «нормальным», в то время как в appcompat нет фона. Как я могу получить «нормальный» фон с помощью AppCompatImageButton?

Current layout rendering

ответ

0

Я не уверен, какая версия библиотеки поддержки вы используете, но прежде, чем была ошибка в библиотеке, которая сообщается здесь,

https://code.google.com/p/android/issues/detail?id=78428

Но они решили его последнее обновление,

Да, похоже, что это работа с кодом android.support. v7.widget.AppCompatButton в AppCompat v22.1.0, цвет можно контролировать на общем уровне темы с помощью «colorButtonNormal».

http://android-developers.blogspot.com/2015/04/android-support-library-221.html http://chris.banes.me/2015/04/22/support-libraries-v22-1-0/

для темы

<item name="colorButtonNormal">@color/button_color</item> 

для версии 21

<item name="android:colorButtonNormal">@color/button_color</item> 

Надеется, что это поможет.

Благодаря

+0

Я использую 24.2.0 – greywolf82

+0

попробуйте использовать выше в теме –

2

Хороший способ стиль кнопки, чтобы использовать стиль @style/Widget.AppCompat.Button.Colored.

Стиль Widget.AppCompat.Button.Colored расширяет стиль Widget.AppCompat.Button и автоматически применяет цвет акцента, выбранный вами в теме приложения.

<Button 
    style="@style/Widget.AppCompat.Button.Colored" 
/> 

Чтобы настроить цвет фона, не изменяя цвет акцента в главной теме вы можете создать собственную тему для вашей кнопки с помощью атрибута android:theme и расширения ThemeOverlay темы.

<Button 
    style="@style/Widget.AppCompat.Button.Colored" 
    android:theme="@style/MyButtonTheme"/> 

определяя следующую тему:

<!-- res/values/themes.xml --> 
    <style name="MyButtonTheme" parent="ThemeOverlay.AppCompat.Light"> 
     <item name="colorAccent">@color/my_color</item> 
</style> 
+0

На Апи 21 это нормально, но на KitKat фон белый .... – greywolf82

+1

@ greywolf82 Я наконец понял, в чем причина! Вы должны расширить свою деятельность из AppCompatActivity. – hrach

+0

background is white on pre 21. Не могли бы вы рассказать, как решить? – Darush