2014-11-14 2 views
1

У меня есть приложение, и я определяю темы "A" и "B" в темах определяют набор стилейТемы в Android смешивает

<resources> 
<style name="Theme.A" parent="Theme.Base.AppCompat"> 
</style> 

<style name="btnMiniPlayer" parent="Theme.A"> 
    <item name="android:background">@drawable/image1</item> 
</style> 

<resources> 
<style name="Theme.B" parent="Theme.Base.AppCompat"> 
</style> 

<style name="btnMiniPlayer" parent="Theme.B"> 
    <item name="android:background">@drawable/image2</item> 
</style> 

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

style="@style/button" 

Зависит от стиля Мне нужно изменить изображение, также я установил в манифесте тему, но приложение смешивает стили, поэтому на данный момент я устанавливаю «A» как основную тему, но приложение показывает изображения из темы " B».

Любая идея ???

+0

вы имеете в виду кнопку, когда происходит какое-либо событие (например, нажатие кнопки), вы хотите изменить стиль кнопки? –

+0

Я имею в виду, когда приложение запускало в манифесте тему, но я задал стиль для темы A, но приложение выбирает стиль из темы B – David

+0

Если стили имеют одинаковое имя, второй стиль не будет перезаписан первый? – Lukos

ответ

0

Я нашел, как ответить на мой вопрос, поэтому вам необходимо выполнить следующие шаги, чтобы исправить это.

1- Создать атрибут в моем случае я установить имя как MyButton:

<declare-styleable name="def_Styles"> 
    <attr name="myButton" format="reference" /> 
</declare-styleable> 

2- В каждой теме ("A" и "B"), вы должны определить предмет

<resources> 
<style name="Theme.B" parent="Theme.Base.AppCompat"> 
    <item name="myButton">@style/CustomButtonB</item> 
</style> 

<style name="CustomButtonB" parent="Theme.B"> 
    <item name="android:background">@drawable/image2</item> 
</style> 

3- по мнению просто задать стиль для правильного атрибута

style="?myButton" 

Если вы измените тему в манифесте между A и B, это будет работа

0

ли что-то вроде этого:

<style name="button" parent="A"> 
    <item name="android:background">@drawable/image</item> 
</style> 

вытяжке/image.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false" android:drawable="@drawable/image1" /> 
    <item android:state_pressed="true" android:drawable="@drawable/image2" /> 
</selector> 

Есть также такие вещи, как:

android:state_selected="true" 
+0

у него есть две родительские темы A и B. .. это будет работать только для ... –

+0

Да у меня есть к родителям <стиль = «имя Theme.A» родитель = «Theme.Base.AppCompat»> <имя стиля = «btnMiniPlayer» родительский = "Theme."> <имя элемента =" A андроида: фон "> @ вытяжке/image1 <имя стиля =" Theme.B»родитель = "Theme.Base.AppCompat"> David