【问题标题】:Android Wrong selected dimenAndroid 错误选择的尺寸
【发布时间】:2017-02-13 21:11:01
【问题描述】:

我有文件夹:值(代表 xxhdpi)。使用尊重值在 dimen.xml 中创建。在 xxhdpi 设备上测试了该应用,效果很好。

然后我用他们的 dimens.xml 文件创建了一个 values-xxxhdpi。问题是,当我再次使用 xxhdpi 设备进行测试时,是从 values-xxxhdpi 文件夹中的维度而不是 values(默认)文件夹中获取值。

使用 xhdpi 也会出现同样的问题。

我做错了什么?

谢谢

【问题讨论】:

    标签: android dimensions


    【解决方案1】:

    也许您将文件夹命名错误。

    尝试values 而不是value

    所以试试values-xxhdpivalues-xxxhdpi文件夹的名称。

    【讨论】:

    • 对不起,我编辑了问题,我有值文件夹。我没有 values-xxhdpi,我只有 values 和 values-xxxhdpi。
    【解决方案2】:

    您确定您的设备在 xxxhdpi 上运行吗?

    xxxhdpi定义如下:

    • mdpi 379.00 x 379.00 像素
    • tvdpi 504.54 x 504.54 像素
    • hdpi 568.50 x 568.50 像素
    • xhdpi 758.00 x 758.00 像素
    • xxhdpi 1137.00 x 1137.00 像素
    • xxxhdpi 1516.00 x 1516.00 像素

    所以也许你必须检查你的分辨率:

    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
    float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
    float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
    
    StringBuilder bld = new StringBuilder();
    bld.append(String.format("Height: %s %s", dpHeight, System.getProperty("line.separator")));
    bld.append(String.format("Width:  %s %s", dpWidth, System.getProperty("line.separator")));
    
    String densityType = "";
    switch (displayMetrics.densityDpi)
    {
        case DisplayMetrics.DENSITY_LOW:
            densityType = "LDPI";
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            densityType = "MDPI";
            break;
        case DisplayMetrics.DENSITY_TV:
        case DisplayMetrics.DENSITY_HIGH:
            densityType = "HDPI";
            break;
        case DisplayMetrics.DENSITY_XHIGH:
        case DisplayMetrics.DENSITY_280:
            densityType = "XHDPI";
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
        case DisplayMetrics.DENSITY_360:
        case DisplayMetrics.DENSITY_400:
        case DisplayMetrics.DENSITY_420:
            densityType = "XXHDPI";
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
        case DisplayMetrics.DENSITY_560:
            densityType = "XXXHDPI";
            break;
    }
    
    bld.append(String.format("Density:  %s %s(%s dpi)", displayMetrics.density, densityType, displayMetrics.densityDpi));
    txtScreenInfo.setText(bld.toString());
    

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2015-03-12
      相关资源
      最近更新 更多