0

私の Android アプリケーションにはいくつかのレイアウトがあります。すべてのレイアウトには、次のコードを使用して、実行時にそれらを識別するためのタグがあります。

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.RelativeLayout01);

if(relativeLayout.getTag() != null)
{
    Log.v("Layout", (String) relativeLayout.getTag());
}

次のレイアウトが提供されています: 「layout」、「layout-long-port-hdpi-finger-800x480」、「layout-long-port-hdpi-finger-854x480」、「layout-normal-port-hdpi-finger-v15」 "、"layout-normal-port-mdpi-finger-480x320".

Galaxy SIII エミュレーターを使用すると、レイアウト layout-normal-port-hdpi-finger-v15 がピケになります。

今、Samsung の Web サイトからGalaxy S IIエミュレータ スキンをダウンロードしました。私の知る限り、画面サイズは 480x800 です。ただし、layout-long-port-hdpi-finger-800x480 レイアウトを選択するのではなく、常に「Layout」ディレクトリからデフォルトを選択します。

質問:正しいレイアウト定義を作成できるように、デバイスまたはエミュレーターにどのような表示要件があるかを調べるにはどうすればよいですか? これらの要件をデバッグ/ログに記録する方法はありますか?

助けてくれてありがとう

4

1 に答える 1

2

Android では、リソースを選択するときに通知バーのサイズが考慮されます。通知バーを考慮に入れると、Galaxy S II のディスプレイは高さ 800 よりわずかに小さくなります。これをデバッグするには、同じ名前の値フォルダー (values-long-port-hdpi-finger-800x480) を追加することをお勧めします。そのフォルダーに bools.xml ファイルを追加し、これを入れます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <bool name="your_display_size_name">true</bool>
</resources>

また、bools.xml ファイルを、他のすべての表示サイズ (またはブール値を true にしたい画面の横のすべてをカバーするもの) に対応する値フォルダーに追加します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <bool name="your_display_size_name">false</bool>
</resources>

次に、プログラムで取得してログに記録するか、好きなように使用します。

boolean yourVariableName = false;
if (getResources().getBoolean(R.bool.your_display_size_name)) {
        yourVariableName = true;
}

問題の原因は通知バーにあると思いますが、そうでない場合は、デバッグに役立つはずです。

于 2012-11-15T04:39:34.760 に答える