1

私は webview でアクティビティを使用しており、デバイスが回転するたびに更新されないようにandroid:configChanges="orientation|screenSize"、AndroidManifest.xml に持っています。問題は、デバイスを回転させるたびに、ステータス バーに加えた変更が消えてしまうことです。回転するたびにWebビューが更新されないようにし、ステータスバーで行った変更を保持する方法を知っている人はいますか?

これは、ステータスバーに変更を加えるために使用する方法です

public static void changeActionBarFont(Activity activity) {
        Typeface slab = Typeface.createFromAsset(activity.getAssets(),
                "RobotoSlab.ttf");
        int actionBarTitle = Resources.getSystem().getIdentifier(
                "action_bar_title", "id", "android");
        int actionBarSubTitle = Resources.getSystem().getIdentifier(
                "action_bar_subtitle", "id", "android");
        if (0 == actionBarTitle & 0 == actionBarSubTitle) {
            actionBarTitle = com.actionbarsherlock.R.id.abs__action_bar_title;
            actionBarSubTitle = com.actionbarsherlock.R.id.abs__action_bar_subtitle;
        }
        TextView title = (TextView) activity.getWindow().findViewById(
                actionBarTitle);
        TextView subtitle = (TextView) activity.getWindow().findViewById(
                actionBarSubTitle);
        if (title != null | subtitle != null) {
            title.setTypeface(slab);
            subtitle.setTypeface(slab);
            subtitle.setTextColor(Color.parseColor("#FFFFFFFF"));
        }
    }

編集:configChangesから を削除するAndroidManifestと、実際には の問題が修正されますが、デバイスが回転するたびに がリロードActionBarされないようにする必要があります。webviewどうすれば両方を維持できるかについて、誰かアイデアがありますか?

4

1 に答える 1

0

今すぐ聞きたいことではないかもしれませんが、向きの変更を防ぐだけでなく、新しい向きでレイアウトを再作成することをお勧めします。

onCreate で、保存されたインスタンスがあるかどうかを確認します (向きの変更の結果)。

if (savedInstanceState == null) {
  //recreate the current state
}
else {
  //normal start
}

一部の値を保持する必要がある場合があります (Shared Prefs または onSavedInstanceState のいずれか)。

このアプローチは、方向をロックするよりも困難ですが、長期的には優れたアプローチであり、投資する価値があります (余分な労力)。

于 2013-07-29T20:40:57.920 に答える