0

onConfigurationChangedアクティビティを破棄して再構築したくないため、をオーバーライドするアプリがあります。それは正常に動作します。

ここで、向きが変更されたときにレイアウトの特定の部分を変更したいと考えています。定期的に私はlayout-landフォルダーでこれを行い、それは機能しますが、今は機能しません。縦向きのレイアウトは、横向きに変更しても保持されますが、明らかに再描画されます.

これは、レイアウトが再描画されるだけで、リソースが res フォルダーから再選択されないためだと思います。

何か案が?(私は使用したくないsetLayoutResourceか、または同様のものを使用したくありません。より一般的なソリューションを使用したいと思います)。

ありがとう。

4

3 に答える 3

0

AndroidManifest で、パラメータ android:configChanges="orientation" をアクティビティに挿入します。

于 2013-01-21T15:17:15.523 に答える
0
@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.yourlayout);
}

とyourlayout.xmlの 2 つのバージョンを提供layout/yourlayout.xmlしますlayout-land/yourlayout.xml。さらに追加できます-さまざまなサイズなどに。

を設定することを忘れないandroid:configChanges="orientation|screenSize"でください。そうしないと、アクティビティがリロードされる可能性があります。

于 2013-05-20T20:01:30.230 に答える
0

onConfigurationChangedアンドロイドがなければ、シーンを独自に再描画します(setLayouResource向きに応じて)。

あなたが書くとき、あなたはすべてを手で扱い、 Androidでは対応するビューを回転させるだけonConfigurationChangedだとOSに言います。onConfigurationChangedlayout-land からレイアウトを使用する場合、唯一の方法は呼び出しsetLayouResource(またはビューを動的に移動 (レイアウト パラメータを変更) しますが、この方法はあまり良くありません) してすべてのデータを復元することです。

于 2013-01-21T15:13:10.343 に答える