【问题标题】:Android weight with margins and paddings带有边距和填充的 Android 权重
【发布时间】:2013-03-04 06:12:38
【问题描述】:

我需要能够使用相对大小的填充 - 更大或更小取决于设备的分辨率和 dpi。

例如,如果我的视图是 100 像素宽,我希望左内边距为 10 像素,右内边距为 10 像素。 但是,如果它在更高密度的屏幕上运行,比如 250 像素,我需要左右填充均为 25 像素。

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

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

【问题讨论】:

  • 你必须更具体一点。 Margin、Padding 和 Weight 都有非常不同的目标。权重将设置视图的宽度和/或高度,但不会设置边距。填充用于 inside 小部件/视图本身,因此这与 weight 属性的距离更远。
  • @StefandeBruijn 指出,问题已修改。
  • 你说 DP(i) 似乎不合理,为什么不呢?它们不是硬编码的像素。它们是每英寸点数。他们会做你想做的事。 8dpi(Google 建议的边距)在高分辨率屏幕上的像素比在低分辨率屏幕上的像素多。
  • 使用 dpi 意味着它在不同设备上的英寸大小完全相同。这很酷,但是由于我使用 layout_weight 对齐了东西,在某些情况下使用 dpi(例如用于填充)会导致一些令人不快的布局差异。
  • 那么也许你的问题应该是关于那些它不起作用的特殊情况:)

标签: android layout margin padding


【解决方案1】:

这并不是真正的“填充的相对大小”,但我认为使用 Android dimension value defined in XML 可以满足您的需求。很难从您的问题中猜出,因为您既想避免“硬编码像素”又想“从 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>

当您是providing resources 时,您可以使用“配置限定符名称”将values-FOO 定位到 API 级别、屏幕尺寸、纵向与横向、上述“以及更多”的组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2011-11-11
    • 2014-03-05
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多