【问题标题】:Layout file not using the correct dimen values file for Nexus 5X/6/6P emulators布局文件未使用 Nexus 5X/6/6P 模拟器的正确尺寸值文件
【发布时间】:2016-07-10 21:02:03
【问题描述】:

我有一个简单的布局文件,其中包含一个 TextView(用于测试)。我正在尝试根据所选设备在适当的值文件中根据dimen 的值更改文本的大小。 除了 Nexus 5X/6/6P 之外,我可以在 Android Studio 中的所有设备上使用此功能

我们以 Nexus 6 为例。
1440 x 2560 - 560dpi
560dpi 是 xxhdpi 设备 (x3)
所以将分辨率除以 3 我们得到 480 x 853
这个设备的最小宽度是480。

我有以下值的文件夹:
sw320dp
sw480dp
sw600dp
sw720dp
sw800dp

实际上,我每个都有 5 个,mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi 的密度各一个。

我在布局中设置了我的TextViewtextSize 属性以使用myTextValuedimen,它在上面提到的每个不同尺寸文件中都有不同的值。

打开此布局文件时,显示正在使用 values/dimen,该值显示为 30,恰好是我的 values-sw320dp-hdpi 文件夹中的值

除非我完全错过了什么,否则这是完全错误的。 它应该使用 values-sw480dp-xxhdpi 文件夹中的dimen

更复杂的是,即使我可以知道它使用了哪个dimen 文件,但对该文件进行更改对布局没有任何影响,就像它不能用它做任何事情/没有使用它.

这仅发生在 Android Studio 中的上述 3 台设备上,并且仅发生在我的 5 个原始布局文件之一和我创建的任何新文件中。我还有 4 个其他布局文件“似乎”按我的预期工作。

这让我发疯了,所以如果有人有任何建议,我将不胜感激。谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    这是我的疏忽。 “似乎”无法正常工作的三个设备都在寻找一个 sw320dp-xxxhdpi 值文件,当一个不存在时(我的情况),它只是使用最匹配的,然后对任何其他值文件进行更改没有影响,这是有道理的。

    【讨论】:

    • 不幸的是,这里仍有一些问题。以最近的例子为例。我整天都在通过我在 values-sw800dp-xhdpi 中的一个维度文件在 Android Studio 中针对 Nexus 10 进行设计,并且一切正常。
    • 当我对 dimens 文件进行更改时,我的布局中的元素正在更新,一切都很好。今天晚上我又做了一些调整,我的布局现在正在从列表中的第一个维度文件中读取值。
    • 但是,即使更改该文件也不会影响我的布局。这里似乎没有什么一致性,我无法确定我正在做什么来导致事情停止工作。如果有人对此有任何建议或想法,我将不胜感激。为了确认我没有忽略某些东西,我使用的是 sw800dp-xhdpi,因为 AS 中的 Nexus 10 是 2560 x 1600 / xhdpi,因此最小宽度为 800,密度为 xhdpi。
    【解决方案2】:

    据我所知,android 使用在小于或等于设备 dp 分辨率的较大文件夹中找到的尺寸。因此,公平地说,它只是从小于或等于设备 dp 分辨率的最大维度文件夹迭代到默认文件夹,我可以告诉它不涉及“匹配”它使用阈值,这使得它非常快速且很容易预测哪个实际会使用值。

    values | sw220dp | sw320dp | sw360dp | sw480dp | sw600dp | ...etc
    .................................|device resolution DP
    

    屏幕分辨率和大小以及其他一些设置为设备提供了 dp 分辨率 ex 380 x 640 dp,因此这比 480 更小,因此它检查的第一个文件夹是 360 -> 朝向默认值,首先找到它设置。在大多数情况下,您无法控制设备使用的 dp 分辨率,尽管有一个缩放设置可用于缩放使用的布局和 sp 尺寸。

    要找出设备 dp,请使用:

    val width = resources.configuration.screenWidthDp
    val height = resources.configuration.screenHeightDp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2015-11-23
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多