Android を使用するために作業と学習を同時に行っていると、レイアウト切り替え機能からの奇妙な/予期しない/あまり文書化されていない動作に気付きましたが、これについてはまだ答えが見つかりません。
まず、ドキュメントが示唆するように、幅と高さの修飾子 ( および など)layout-w320dp
はlayout-h320p
、「標準」値 (240、320、480、600 など) を使用する必要があります。ドキュメントには、有効に利用可能なスペースが考慮されることも記載されていますが、これが高さにどのように影響するかについてはそれ以上言及されていません。たとえばgetResources().getConfiguration().screenHeightDp
、320dp の大きなエミュレーター画面で呼び出すと、返される使用可能な高さは 295 です。したがって、layout-h320p
320dp 画面では適切に「アクティブ化」されないため、使用は不正確です。
私が書いているものは、小さな画面への適応に関して、2 つのシナリオを処理する機能を備えている (備えている必要があります): 幅が十分でない場合と、高さが十分でない場合です。私が見つけたのは、エミュレーターに自分の状況に適したレイアウトを強制的に選択させることができないということlayout-w320p
ですlayout-h240p
。高さが 320p、幅が 480p のエミュレーターで実行すると、layout-w320p
ロードされます。このような 2 つのケースをどのように均一に扱うことができるでしょうか。width 修飾子と height 修飾子の両方を指定することはできません。
第 3 に、アプリを 2.2 までサポートしたい場合、「従来の」修飾子 (小、中、大、特大) を使用する以外に、さまざまな画面をサポートする方法はありますか?
編集: サポートしたい最小バージョンは 2.2 であるため、小/中/大/特大の修飾子パターンを使用することにしました。私はport
とland
修飾子も使用します。Android のレイアウトでの意思決定はこの方法でより明確になりますが、前述の問題は残ります。