Наименьшая ширина макетов. ошибка в Nexus 7?

При использовании квалификаторов layout-swdp я получаю результаты, как показано во вложении. Предполагается, что квалификатор sw означает, что наименьшее измерение должно совпадать или быть больше, чем квалификатор. Это не похоже на работу с Nexus 7 (работает 4.2.1). Я не понимаю, что делают классификаторы наименьшей ширины, или N7 сообщает неверно?

Чтобы воспроизвести мой тестовый пример, у меня есть много папок layout-swdp. У каждого есть 2 текстовых поля. Первый просто указывает, в каких папках он находится. Следующий код ниже:

private CharSequence collectScreenStats() {
    StringBuilder str = new StringBuilder();
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    int dpWidth = (int)(width / metrics.density);
    int dpHeight = (int)(height / metrics.density);
    str.append(Build.MANUFACTURER);
    str.append(" ");
    str.append(Build.MODEL);
    str.append("\n");
    str.append("Pixels: ");
    str.append(width);
    str.append(" x " );
    str.append(height);
    str.append("\nDp (px / density): ");
    str.append(dpWidth);
    str.append("dp x " );
    str.append(dpHeight);
    str.append("dp" );
    str.append("\nsmallest w: " + Math.min(dpWidth, dpHeight));
    str.append("\ndensity: ");
    str.append(metrics.density);
    str.append("\ndensityDpi: ");
    str.append(metrics.densityDpi);

    return str;
}

1 ответ

Решение

Хорошо, это похоже на ошибку в ICS, когда он не дает точного отчета о количестве пикселей на весь экран, так как он учитывает хром.

Android DisplayMetrics возвращает неверный размер экрана в пикселях на ICS

Итак, мои вышеприведенные номера дисплея отключены, так как Nexus 7 равен 1280 x 800, а не 1280 x 736. При использовании правильных чисел все работает.

Другие вопросы по тегам