2016-11-16 1 views
0

Я ищу Google и продолжаю бороться с поиском ключевого слова, но все равно ничего.Set Specified Views background stylistically и изменение по темам

То, что я хочу так же, как:

<style name="Theme.DefaultWhite" parent="@android:style/Theme.DeviceDefault"> 
    <item name="android:background">#ffffffff</item> 
    <item name="MyCustomBackground">#33ffffff</item> 
    </style> 
    <style name="Theme.DefaultBlue" parent="@android:style/Theme.DeviceDefault"> 
    <item name="android:background">#ffffffff</item> 
    <item name="MyCustomBackground">#3388ffff</item> 
    </style> 

и установить деталь на мой указано (другой его использовать Android по умолчанию) Просмотров.

<ImageView> 
     id = "@+id/NNI_ivCards" 
     background="@style/MyCustomBackground" 
    </ImageView> 
    <ImageView> 
     id = "@+id/NNI_ivBarRoot" 
    </ImageView> 

NNI_ivCardsImageView необходимо изменить цвет фона по темам, и NNI_ivBarRoot не будет изменен по темам.

Мне нужен стилизованный пользовательский ресурс, который он изменяет в соответствии с темой.

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

ответ

1

так,

этот код может изменить цвет (любой цвет), изменив тему.

первое, что вам нужно добавить 2 типа к вашему style.xml так:

<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

</style> 

<style name="CustomTheme" parent="Theme.DefaultTheme" > 

</style> 

здесь только я добавить DefaultTheme и CustomTheme, теперь перейдите в manifest.xml и добавьте эту строку android:theme="@style/DefaultTheme" к вашему приложение тег:

<application 
     android:theme="@style/DefaultTheme" 
     ...> 

создать новый XML-файл с именем attrs.xml и добавить этот код:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="color1" format="color" /> 
    <attr name="color2" format="color" /> 
</resources> 

вернуться к стилю и добавить эти цвета:

<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="color1">#FFFFFF</item> 
    <item name="color2">#FFFFFF</item> 
</style> 

<style name="CustomTheme" parent="Theme.DefaultTheme" > 
    <item name="color1">#33ffffff</item> 
    <item name="color2">#3388ffff</item> 
</style> 

теперь у вас есть 2 темы, в DefaultTheme цвет1 и цвет2 #FFFFFF, и в CustomTheme color1 is # 33ffffff и color2 is # 3388ffff

Перейти к вашему imageView и добавить этот цвет:

<ImageView> 
    android:id = "@+id/NNI_ivCards" 
    android:background="?attr/color1" 
</ImageView> 

изменить тему вы должны вызывать setTheme(R.style.DefaultTheme); перед тем setContentView() метод onCreate() метода, так что ваша деятельность должна быть такой:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(R.style.CustomTheme); 
    setContentView(R.layout.main_activity); 
    .... 
} 
+0

Я не могу изменить его стиль с темой, если я жёстко это Views стиль. – nyconing

+0

, поэтому вам нужен код для изменения темы, а цвета меняются с темой. см. мой ответ еще раз, чтобы решить эту проблему. –

+0

Ты мой герой! Set? Attr/color1 делает это !!!!!! И что attr, возможно, нуждается в ? – nyconing