6

デバイスの解像度と dpi に応じて、パディングに相対的なサイズを使用できるようにする必要があります。

たとえば、ビューの幅が 100 ピクセルの場合、左に 10 ピクセル、右に 10 ピクセルのパディングが必要です。しかし、それがより高密度の画面で実行され、250px である場合、左右のパディングをそれぞれ 25 ピクセルにする必要があります。

ピクセルまたは dp をハードコーディングすることは合理的ではないように思われます。また、コード ビハインド スケーリング ロジックを回避できる場合は回避したいと考えています。また、同じ効果を得るために、追加の重み付けされた空のビューを使用しないことを好みます。どちらの方法でもパディングをシミュレートする方法がわかりません。

xml からこれを行う方法はありますか? または、コード ビハインドのデバイス解像度/dpi に基づいてスケーリングする必要がありますか?

4

1 に答える 1

0

実際には「パディングの相対的なサイズ」ではありませんが、XML で定義された Android ディメンション値を使用すると、必要なことが行われると思います。「ピクセルのハードコーディング」を避けたいだけでなく、「xmlからこれを行う」必要があるため、質問から推測するのは困難です;)

上記のリンクはこの例を示しています。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>

それで;

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

Android SDK 自体がこのアプローチを使用しています。

例えばvalues/dimens.xml

<resources>

    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>

</resources>

values-sw600dp/dimens.xml

<resources>

    <!--
     Customize dimensions originally defined in res/values/dimens.xml (such as
     screen margins) for sw600dp devices (e.g. 7" tablets) here.
    -->

</resources>

「構成修飾子名」を使用してリソースvalues-FOOを提供する場合、API レベル、画面サイズ、縦長と横長、上記の「その他」の組み合わせをターゲットにすることができます。

于 2014-04-23T09:17:05.807 に答える