Androidで、複数の画面をサポートする必要があるアプリを作成しています。
この目的のために私は多くの答えを読みました、そして私が最も好きなものは私が次の名前によってresフォルダーに異なるフォルダーを作成できるという状態です、
小さな画面の場合layout-small、
大画面の場合layout-large、
特大画面の場合layout-xlarge
そして私は同じ名前で異なる画面のために異なるレイアウトを作成する必要があります。例:mylayout.xml
そして私はmanifest.xmlファイルに次のコードを入れなければなりません
<supports-screens Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true" />
そして最後に、アクティビティファイルに次の行を書き込む必要があります。
setContentView(R.layout.mylayout);
このアプリをさまざまなサイズの画面で実行すると、画面の解像度に応じてさまざまなフォルダーからレイアウトを取得する必要があります。
しかし、私の場合、これは発生していません。layoutフォルダーで定義されたレイアウトのみが必要です。
誰かが私にこれが起こる理由と、私のアプリがすべてのサイズの画面で効果的に実行できるようにこの問題を解決する方法を説明してもらえますか?.
次のように試してください:
代わりに
以下のリンクを参照してください。
http://developer.Android.com/guide/practices/screens_support.html さまざまな画面サイズの場合、以下は、さまざまな画面サイズにさまざまなレイアウトデザインを提供するアプリケーションのリソースディレクトリのリストです。小、中、高密度、および超高密度画面用のさまざまなビットマップドローアブル。 resフォルダー内のさまざまなサイズのレイアウトファイルを使用できます。また、密度に基づいて描画可能な画像を変えることもできます。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png //中密度のビットマップres/drawable-hdpi/my_icon.png //高密度のビットマップres/drawable-xhdpi/my_icon.png //超高密度のビットマップ
<compatible-screens>
<screen
Android:screenDensity="ldpi"
Android:screenSize="small" />
<screen
Android:screenDensity="mdpi"
Android:screenSize="normal" />
<screen
Android:screenDensity="xhdpi"
Android:screenSize="large" />
<screen
Android:screenDensity="xhdpi"
Android:screenSize="xlarge" />
</compatible-screens>
そして、その後にこの行を使用します。
Android:configChanges = "orientation | screenSize | keyboardHidden"
値では、layout-small
のようなフォルダの命名規則は、api version less than 3.1
のあるデバイスでのみ機能します。 3.1より大きいAPIレベルの場合は、layout-sw600dp
のような名前の値ファイルを作成する必要があります。これを読んでください http://developer.Android.com/guide/practices/screens_support.html3.1api
このように、デバイスのタイプごとにlayout-sw600dp、layout-sw720dpを作成する必要があります。 layout-sw600dpは、layout-600dpフォルダーとlayout-sw720dpフォルダーがある場合、このレイアウトが最小幅600dpのデバイスで機能することを意味します。最初のレイアウトフォルダは、最小幅が600dp(7インチタブレット)から720dpのデバイスで機能し、2番目のレイアウトフォルダは、最小幅が720dp(10インチタブレット)を超えるデバイスで機能します。
最低限必要なバージョンが3.1を超える場合は、layout-small、layoutxLargeフォルダーは必要ありません。それ以外の場合は、両方のタイプのレイアウトfromatを考慮する必要があります。
アプリケーションがさまざまな画面に正しく表示されるようにする方法についての簡単なチェックリストは次のとおりです。
XMLレイアウトファイルで寸法を指定するときは、wrap_content, fill_parent,
またはdp
単位を使用します。アプリケーションコード(.Java
ファイル)でハードコードされたpixel
値を使用しないでください。 AbsoluteLayout
は使用しないでください(Android 1.5
では非推奨です)。代わりに、相対配置を使用して子ビューをレイアウトするRelativeLayout
を使用する必要があります。さまざまな画面密度に対応する代替ビットマップドローアブルを提供します。
時間をかけてこれらを読んでください screens_support または、より良いアイデアを得るには How Android Finds the Best-matching Resource )を参照してください。リソースを配置します。