1

私は通常、1 つのレイアウトを表すフラグメントによってコード/ロジックを整理します。現在、ユーザーから入力データを取得するための比較的単純なフォームがいくつか必要です。これらは、目的に多少関連しています。

3 つの画面があり、それらを処理するために 3 つのフラグメント (ビューの表示、入力の読み取り、送信など) を作成できるとします。または、1 つのフラグメントを使用し、FrameLayout を使用してレイアウトのスタックを作成する必要があります。3つのビューすべてを積み重ねて、好きなビューを非表示/表示するように考えていました。しかし、ドキュメントによると

通常、FrameLayout は単一の子ビューを保持するために使用する必要があります。これは、子ビューが互いに重なり合うことなく、さまざまな画面サイズに拡張できるように子ビューを整理することが難しい場合があるためです。

これを行う良い方法、またはこれのために複数のフラグメントを作成する必要があります(これの欠点は、多くの小さなクラスとコードの繰り返しです。基本クラスを使用する場合がありますが、他のオプションを探索したい場合があります)

ありがとう。

4

1 に答える 1

1

でビューが互いに重なり合っていても、実際にはあまり気にしないように思えます。FrameLayout実際には、一度に 1 つしか表示されないと予想されるため、重なり合う はずです。FrameLayoutそれぞれが完全な幅と高さを占めるスタックされた子ビューを確実に表示できます。また、未使用のビューの可視性をINVISIBLEまたはに設定するGONEと、それらが表示されているビューの上にある場合でも、画面の押下をインターセプトしたり、フォーカスを取得したりしません。ユーザーが対話しています。

読みやすさとコードのメンテナンスの点では、メモリのオーバーヘッドが増えるとしても、フラグメントを交換する方が理にかなっていると思います。レイアウト管理は個々のフラグメント内にカプセル化でき、ビューの表示/非表示について心配する必要はありません。フラグメント トランザクションがその側面を処理します。

于 2013-02-03T04:52:37.277 に答える