この動作が期待されておらず、標準的でもないことはわかっていますが、それが実現できるかどうかは興味があります。Google はまた、normal-large-xlarge スキームが最適ではないことを認識したため、 Android 3.2から非推奨になりました。(layout-swXXXdp が私にとって最良の選択です)
ただし、サポートしなければならない 3.2 未満のデバイスがあり、このシステムが原因で誤動作する可能性があります。
主な問題:
Galaxy Note 1 と Galaxy tab 1 (および同じ仕様の他のデバイス) は、同じlayout-large
フォルダーからリソースを選択します。しかし、合理的には、7 インチ未満の画面と 7 インチ以上の画面では異なるレイアウトを作成する必要があります。「例外デバイス」用に別のフォルダーを作成できることはわかっています (ここで説明した layout-large-xhdpi-1280x800 など)。特定のデバイス。
したがって、目標は、7 インチ未満のデバイス用と 7 インチ以上のデバイス用に 1 つの xml パッケージ (フォルダー) のみを維持することです。次のようなトリックがあることを知っています。
- xml-s に異なる名前を付け (main.xml と main-large.xml)、どちらを選択するかをコードで決定しますが、デバイスでさえコードから自分自身について決定することはできません。 6.8 から 7.8 インチのスケールに戻します)。また、リソース フォルダーでより「androidy」な方法を使用したいと思います。
- 私が述べたように、例外フォルダーを維持します。
layout
、layout-large
、layout-specifictags1
、layout-specifictags2
およびリストを広げることができます。また、specifictags1、tags2、および normal にはまったく同じ xml ファイルがありますが、layout-large
. 全体の理由は、これを回避することです。 - (編集) エイリアスを使用するというアイデアは、@Joe Malin によって思いつきました。残念ながら、 で
layout-large-xhdpi-1280x800
main.xml を参照する main.xmlという名前のエイリアスを作成することはできませんlayout
。layout-large-xhdpi-1280x800
したがって、にのみ存在するmain.xmlを参照するfakemain.xmlを維持する必要がありlayout
ます。layout
しかし、コードからのレイアウトを気にする必要がなく、エイリアスである fakemain.xml のみを使用する必要がないため、 に fakemain.xml も必要です。ただし、このソリューションはまだ機能する可能性がありますが、残念ながら実際には機能していません。に fakemain.xml がlayout
ありlayout-large
、layout-large-xhdpi-1280x800
galaxy note の場合、エイリアスはlayout-large
エイリアスを使用しても何も達成できませんでした。
質問:
layout-sw600dp の概念は、最適で必要な動作を実現しますが、API レベル 13 ではサポートされていません。
- デバイスにこのフォルダから強制的に選択させる方法、またはその変数を (java リフレクションを使用して) 上書きする方法はありますか? - それはかなり悪いことです) 大きくない通常の画面のように動作しますか?
- 2 つの xml パッケージ (フォルダー) のみを維持する方法はありますか。
- 1 つは 7 インチ未満のデバイス用、
- もう 1 つは 7 インチ以上のデバイス用です。