2016-11-18 7 views
0

同じ名前の2つのレイアウトを定義し、そのうちの1つを「layout-land」ディレクトリに配置します。Androidでさまざまな画面の向きに異なるビュー/ウィジェットを管理しますか?

2つのレイアウトファイルに同じビュー(およびビューID)が含まれている場合、私のフラグメント/アクティビティでそれらが見つかり、そこに問題はありません。

しかし、私はポートレートとランドスケープのデザインが本当に異なっているため、各レイアウトファイルに実装されているカスタムビュー/ウィジェットのタイプを変更する必要があります。

ビューIDまたはビュータイプが異なるか、または見つからない場合は、NullPointer例外またはClassCast例外が発生する可能性があります。

私のフラグメントコードでタイプやヌルをチェックするのが好きではありません。これを行うにはより良い方法が必要だと思いましたが、まだ見つかりませんでした。

誰もがこれを達成する "クール"または少なくともよりエレガントな方法を知っていますか?

ありがとうございます!

答えて

0

レイアウトフォルダには、リソース内に、縦書き用と横向き用の2つのレイアウトファイルが必要です。

例:あり

- res 
- - layout 
- - - main_layout 
- - - main_layout-land 

あなたはそれを持って、あなたのアプリが今の向きに応じて、2つの異なるレイアウトファイルを使用します。詳細は、This stackoverflowを参照してください。

+0

こんにちはジョシュ、私の質問の説明をお読みください。私はレイアウトリソースの処理について知っているので、レイアウトファイル間でビューとウィジェットが完全に異なる状況を管理する方法を知る必要があります。 –

+0

デバイスの状態を変更すると、Androidは新しいアクティビティを完全に作成するため、デバイスの向きの変更をリッスンして新しいアクティビティを開始できます。 http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in-androidこのスレッドを参照してください。方向に応じて、新しいアクティビティ全体を起動したり、フラグメントを適切なものに置き換えることができます。これはあなたの問題を取り除くのに役立ちます。 –

関連する問題