5

私は自分の Android アプリケーションを構築し、さまざまな向きのレイアウトを今すぐ追加したいと考えています。layout-land フォルダーを作成し、そこに最初のスターター アクティビティ「myStartActivity」用の別のレイアウト (以前に両方の方向で使用したレイアウトと同じ名前) を配置しました。

アプリを起動する前の画面の向きに応じて、適切なレイアウトが選択されます。ポートレートで起動すると「レイアウト」フォルダー内の「myLayout.xml」と「レイアウトランド」内の「myLayout.xml」-横向きで起動したときのフォルダー。

問題は、すでにアクティビティにいるときにデバイスを回転させると、回転後に新しいレイアウトが得られないことです。例: 縦向きから横向きに回転すると、本来あるべき "layout-land" フォルダーではなく、"layout" フォルダー内の "myLayout.xml" が表示されます。

OnConfigurationChange メソッドなどを上書きしませんでした。「myStartActivity」で行うことは、いくつかのボタンをインスタンス化し、いくつかのリスナーを与えることだけです。ボタンの順序を変更するために、ランドスケープで別のレイアウトを使用したい。

4

3 に答える 3

3

私の場合、説明されている問題は、マニフェストのアクティビティに android:configChanges="orientation" がある場合にのみ発生します。

それ以外の場合は、回転時に正しいレイアウトが自動的に使用されます。

于 2011-09-12T10:47:56.897 に答える
0

エミュレーターのみでテストしている場合は、向きの変化を検出する際に問題が発生する可能性があります。少なくとも私はそれを経験しました。

于 2011-10-26T12:07:05.770 に答える
0

あなたができることはActivity.getResources().getConfiguration().orientationを使うことです

次に、向きの結果に応じて、回転時に呼び出される oncreate() メソッドでコンテンツ ビューを設定します。

protected void onCreate(Bundle savedInstanceState) {
int result = this.getResources().getConfiguration().orientation;
if (result == 1){
//set content view to portrait
setContentView(R.layout.portrait);
}
else{
//set content view to landscape} 
setContentView(R.layout.landscape);
}

またはケースステートメントに固執します:)

于 2011-03-17T14:18:21.623 に答える