6

私は2つのタブレットを持っています:

1 サムスン Android 3.0

    DisplayMetrics {density=1.0, width=600, height=976, 
scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021}

1 低コスト デバイス、Android 2.3.3

    DisplayMetrics {density=1.0, width=480, height=800, 
scaledDensity=1.0, xdpi=160, ydpi=160.42105}

画面サイズごとに異なるレイアウトを使用すると、両方のデバイスが large-long で mdpi と表示されるため、レイアウト フォルダー名では区別できません... 問題は次のとおりです。

textSize="20dp" で TextView を使用します

最初のデバイスでは、テキストの幅は画面の半分ですが、2 番目のデバイスではそれよりも大きくなります (画面幅の 80%)。なんで?dp (px ではなく) を使用すると、両方のデバイスでテキストが同じように表示されると思います。spでも試しましたが、何も変わりません...

(例としてTextViewを使用しましたが、レイアウト内のすべての要素で同じ問題があります:ボタンのサイズなど)

「layout-w600dp」などのレイアウト フォルダ名を使用しようとしますが、Android 3.2 で導入されたものはそうではありません。

onLayout() のコードで要素のサイズを変更できることは知っていますが、そうしたくありません...

なにか提案を?

アップデート

テーマを使用してレイアウトの問題を解決しました:実行時に特定の dimens.xml をアクティブにします

4

1 に答える 1

3

DimentionのAndroid ドキュメントには、次のように書かれています。

dp とピクセルの比率は画面密度によって変化しますが、必ずしも正比例するとは限りません。

だから、あなたが見ているものはまったく問題ありません

LinearLayout の重みを使用して、画面の 50% を達成できます。これを参照してください。

于 2012-06-06T09:39:34.147 に答える