1

私は何か間違ったことをしているに違いない、

レイアウトxmlと線形レイアウトがあります。この線形レイアウトには2つのボタン(かなり大きい)があり、重力は線形レイアウトの垂直方向と水平方向の両方の中心に設定されています。NexusOne3.7用に設計した画面で見栄えがします。

したがって、Eclipseでは、ネクサス1(ドロップダウンを使用)を10.1画面に変更すると、すべてが正常に表示されますが、ボタンが非常に小さいため、ルックアンドフィールのサイズが維持されないようです。

私は何か間違ったことをしていますか。

私がやろうとしているのは、どのデバイスを使用していても、画面がほぼ同じように見えるようにすることです。SPが最適な方法でしたが、どうでしょうか。

前もって感謝します

4

3 に答える 3

0

ボタンが適切なピクセル数にスケーリングされていると思われますが、タブレット ビューに切り替えると、デザイナーは 10.1 インチの画面に合わせて画像を縮小しています。デザイナーの左上にある小さなアイコンをクリックすると、円の中に数字の 1 があると、ピクセルが 1:1 でマッピングされたときにどのように見えるかがわかります

Scale Indepent Pixel (または Density Independent Pixel) は、異なる画面 (ピクセル) 密度の影響に対抗するのに適しています。したがって、あなたが行っている比較は正しいものではありません。DIP (または SIP) を使用した場合の効果を実際に確認するには、物理​​サイズはほぼ同じで画面密度が異なる 2 つの画面でレイアウトのルック アンド フィールを比較する必要があります。(2 つのボタンを試してください。1 つは幅が x px 幅で指定され、もう 1 つは幅が x dp で指定されています。

さらに、画面の物理的なサイズに基づいてボタンのサイズを設定したい場合は、次の方法があります。SIP でサイズを指定する代わりに、その値に「dimen」リソースを指定します。その後、大画面と小画面で異なる dimen 値を指定できます。

dimen の使用例: 幅を次のように指定します。 android:layout_width="@dimen/view_width"

次に、ファイル res/values/dimens.xml を作成します

<resources>
    <dimen name="view_width">10dp</dimen>
</resources>

別のファイル res/values-large/dimens.xml を作成します

<resources>
    <dimen name="view_width">20dp</dimen>
</resources>
于 2012-09-11T08:19:30.257 に答える
0

<uses-sdk>で定義するのを忘れるとAndroidManifest.xml、レイアウトなどに関する奇妙な問題が発生する可能性があります。

したがって、AndroidManifest.xml最初に以下の例が定義されているかどうかを確認してください。

<uses-sdk android:minSdkVersion="5"
          android:targetSdkVersion="9" />

問題が解決しない場合は、コードを確認できるようにリソース xml を投稿してください。

于 2012-09-11T07:45:11.307 に答える
0

したがって、Galaxy タブとタブ 10.1 を切り替えるときに同じことがありました。Android は各画面をビンに分類し、それに応じて SP を使用します。両方の画面で次のコードを実行してみてください。

Display d = getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
d.getMetrics(dm);
Log.d("DISPLAYINFO", "Classified density: " + dm.densityDpi + ", scaled density: " + dm.scaledDensity + ", actual densities: x: " + dm.xdpi + ", y: " + dm.ydpi);

小さいタブレットはより高い密度のビンに分類され、同じように見えるようにすべてが拡大されていることがわかる場合があります。ちょっと面倒です。

于 2012-09-11T07:59:05.470 に答える