6

環境設定のリストを使用して昼と夜のモードのテーマを設定する Android アプリケーションを作成しました。

私のstyles.xml

<style name="Theme.FullScreen" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"></style>

<style name="PreferencesTheme" parent="android:Theme.Light">
    <item name="android:background">#FFEAEAEA</item>
</style>

<style name="PreferencesTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@drawable/ic_icon_settings</item>
</style>

ナイトモードとデイモードをstyles.xmlに適用する方法を知っている人はいますか

4

1 に答える 1

10

Android 3.2 API13 サンプル アプリケーションのHoneycombGalleryの例を参照してください。

彼らがこれを実装した方法は次のとおりです。

で 2 つのテーマを宣言しますstyles.xml

<style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar" />

<style name="ActionBar.Light" parent="@style/ActionBar">
    <item name="android:background">@color/actionbar_background_light</item>
</style>

<style name="ActionBar.Dark" parent="@style/ActionBar">
    <item name="android:background">@color/actionbar_background_dark</item>
</style>

<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar.Light</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="listDragShadowBackground">@android:color/background_light</item>
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_light</item>
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_light</item>
    <item name="menuIconShare">@drawable/ic_menu_share_holo_light</item>
</style>

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo">
    <item name="android:actionBarStyle">@style/ActionBar.Dark</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="listDragShadowBackground">@android:color/background_dark</item>
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item>
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item>
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item>
</style>

モードを切り替えるメニュー:

これはmain_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/toggleTheme"
        android:title="Day/Night"
        android:showAsAction="never" />
</menu>

そして、モードとMainActivityモードを切り替えるクラス:

注:この質問のコンテキストに必要のない他のものを取り除きました.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.toggleTheme:
        if (mThemeId == R.style.AppTheme_Dark) {
            mThemeId = R.style.AppTheme_Light;
        } else {
            mThemeId = R.style.AppTheme_Dark;
        }
        this.recreate();
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

モードの切り替えに必要なグローバル変数:

private int mThemeId = -1;

最後に選択したモードを保存するには、onCreate() で:

if(savedInstanceState != null && savedInstanceState.getInt("theme", -1) != -1) {
    mThemeId = savedInstanceState.getInt("theme");
    this.setTheme(mThemeId);
}

ただし、SDK Manager からサンプルをダウンロードして、実際の (全体の) 機能を確認してください。

于 2012-11-26T09:46:29.543 に答える