2016-08-23 8 views
1

私は、アクティビティ内にeditTextといくつかのボタンを持っています。私が風景モードに電話を傾けるたびに、私はそれを標準値にリセットします。これを変更するには、私は活動のマニフェストに次の行を追加:レイアウトとレイアウト(土地)xmlファイルの使い方は?

android:configChanges="orientation|keyboardHidden|screenSize" 

そして、これで私は携帯電話の向きを変えることで同じ値を得ました。しかし、私のレイアウトはポートレートモードでは完璧だったし、風景モードでは(ボタンはスクリーンから外れていた)ひどい。だから私は2つのxmlファイルを持っています:レイアウトとレイアウト(土地)。このように、このアクティビティが呼び出されたときに電話が傾けられると、レイアウト(土地)が呼び出されます。それ以外の場合は、ポートレートレイアウトが呼び出されます。しかし、アクティビティが呼ばれた後で私の電話機を傾けるたびに、使用されるレイアウトは同じままです。私は、アクティビティの呼び出し中とその後のレイアウトを動的に変更する方法を知りたいと思います。

答えて

1

マニフェストにandroid:configChangesを指定して、アクティビティの再読み込みを禁止しています。

これを削除すると、ローテーションの変更にアクティビティが再ロードされ、レイアウトが正しく処理されます。その後、ローテーション中に一時データを保存および復元するために、アクティビティのライフサイクルイベントを処理する必要があります。

https://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState

0

通常、/ res/layoutのレイアウトファイルは、ポートレートとランドスケープの両方に適用されます。例えば

/res/layout/activity_main.xml 

このフォルダにactivity_main.xmlをコピーして、必要な調整

は、フォルダの名前はレイアウト - でなければなりません確かに作るのですか、新しいフォルダ /res/layout-landを追加することができますランドスケープモードの土地。

+0

これを行いました。私が知りたいのは、editText値を消去せずに両方のレイアウトを動的に使用する方法です。値を変更した方法は変わりませんでしたが、アクティビティが呼び出された後にレイアウトを変更することはできません – GabrielRado

関連する問題