Android权重与边距和填充

Geo*_*rge 6 layout android margin padding

我需要能够使用相对大小的填充 - 根据设备的分辨率和dpi更大或更小.

例如,如果我的视图宽100px,我希望剩下10px填充和10px填充正确.但是,如果它在更高密度的屏幕上运行,并且说是250px,我需要左右填充,每个都是25像素.

硬编码像素或dp似乎不合理,如果我可以逃脱它,我更愿意避免代码隐藏缩放逻辑.我也不想使用任何额外的加权空视图来获得相同的效果.不知道我怎么能用它来模拟填充.

有没有办法从xml做到这一点?或者我是否必须根据背后的代码中的设备分辨率/ dpi来缩放它们?

jpw*_*jpw 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>
Run Code Online (Sandbox Code Playgroud)

然后;

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

当您使用“配置限定符名称”提供资源时,您可以定位values-FOOAPI 级别、屏幕尺寸、纵向与横向、上述“及更多”的组合。