【问题标题】:Android add a padding with size that looks equal on all devicesAndroid 添加一个大小在所有设备上看起来都相同的填充
【发布时间】:2019-12-09 18:08:22
【问题描述】:

我有一个与我的屏幕/片段大小相同的view。但是,我想在左右边缘添加一个填充,这样在所有设备上,这个填充看起来都一样大小。当我使用时:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingEnd="20dp">
....

填充在所有设备上都不相同。在平板电脑上,它比在小型手机上要小得多。有没有办法以编程方式将所有设备上的填充设置为相等?

dp 是否应该与密度无关?那么为什么在不同密度的设备上设置为dp 的填充在视觉上并不总是相同的大小?

【问题讨论】:

  • 与密度无关!= 与大小无关。使用layout_weight 进行相对大小调整

标签: android android-layout padding density-independent-pixel


【解决方案1】:

请注意,您想要的内容不可扩展且不推荐。原因是 Android 中设备的尺寸和像素密度差异很大。

此外,我还附上了一个more general article,可能会对您有所帮助。

但是:

A.尝试使用其他单位,如 mm 或 in,它们“基于屏幕的物理尺寸”(see 文档)。

B.也许以编程方式设置它。也就是计算多少px/etc。您需要在每台设备上使其在所有设备上看起来都相同 (mm)。

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, getResources().getDisplayMetrics());

最后,我不确定是否是这种情况,但正如其他用户所建议的那样,this 可能会有所帮助。然而,再一次,我不完全确定这是否是你所需要的。在同一行,您还可以根据设备的详细信息使用限定符定义尺寸(请参阅here)。

【讨论】:

    【解决方案2】:

    您需要为不同的分辨率管理不同的dimens文件,请查看此链接,您只需将padings参数放入dimens,然后从dimens使用。

    How to define dimens.xml for every different screen size in android?

    【讨论】:

      【解决方案3】:

      就像here中的答案一样

      API 21 填充不能通过 XML 工作,您可以像我上面分享的链接一样以编程方式定义

      但您可以尝试创建 style="@style/RootLayoutWithPadding" 在您的视图中使用它

      styles.xml里面添加这个

      <style name="RootLayoutWithPadding"> <item name="android:paddingLeft">@dimen/activity_horizontal_margin</item> <item name="android:paddingTop">@dimen/activity_vertical_margin</item> <item name="android:paddingRight">@dimen/activity_horizontal_margin</item> <item name="android:paddingBottom">@dimen/activity_vertical_margin</item> </style> 对于每个填充,您可以在 values.xml 中填充您想要的大小

      希望对你有帮助:)

      【讨论】:

        猜你喜欢
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        相关资源
        最近更新 更多