を、あなたのcolorBackgroundはあなたの属性になります定義する必要があります。この例では
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="?attr/theme_dependent_icon" />
</LinearLayout>
、私が使用しているためカスタムテーマ名MyDarkTheme
を:あなたは、あなたのmain_activity.xml
に?attr/theme_dependent_icon
経由で属性を使用することができ、その後
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<declare-styleable name="custom_menu">
<attr name="theme_dependent_icon" format="reference"/>
</declare-styleable>
<style name="MyDarkTheme" parent="android:Theme" >
<item name="theme_dependent_icon">@drawable/ic_search_dark</item>
</style>
<style name="MyLightTheme" parent="android:Theme.Light" >
<item name="theme_dependent_icon">@drawable/ic_search_light</item>
</style>
</resources>
:theme_dependent_icon
はstyles.xml
で定義されている次の例を考えてみましょうMyLightTheme
の場合は、setContentView
より前のメインアクティビティのonCreate
の間に選択する必要があります。つまり、
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MyDarkTheme); // causes ic_search_dark.png to be shown
// setTheme(R.style.MyLightTheme); // causes ic_search_light.png to be shown
setContentView(R.layout.main_activity);
}
setTheme()を呼び出すことは、実行時にテーマを選択する1つの方法です。別の方法は、values
、values-11
、values-14
の既定のテーマ、Android 3.0(API-11)のテーマ、Android 4.0(API-14)のテーマに対応するstyles.xml
の複数のバージョンを定義することです。
アンドロイドのないこれらのタグは、アンドロイドソース内の同じres/valuesフォルダ内のattr xmlファイル内で定義されているようです。 http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=core/res/res/values;hb=HEAD attrs.xmlとattrs_manifest.xmlを見てください何らかの理由でxmlnsを使ってこれらをインポートする必要があると思うか、類似のファイルを値フォルダに追加する必要があると思いますが、確かめるためにxmlについて十分に分かりません。 – Jems