Размер дисплея изменился, из настроек системы влияет мой макет Oreo - PullRequest
0 голосов
/ 14 января 2019

Я хочу, чтобы макет был одинаковым по размеру и форме, и ранее настройка масштаба шрифта работала нормально. Теперь Android, кажется, предложил вариант изменения размера дисплея, который дезориентирует всю мою компоновку.

Я попытался создать значения большого размера, макета большого размера и попытался установить нормальные размеры для макета, но без положительного результата.

Я также нашел этот код в какой-то теме, чтобы помочь мне с моей проблемой:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Log.d("TAG", "adjustDisplayScale: " + configuration.densityDpi);
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.getDefaultDisplay().getMetrics(metrics);
        if (configuration.densityDpi >= 485) //for 6 inch device OR for 538 ppi
            configuration.densityDpi = 500; //decrease "display size" by ~30
        else if (configuration.densityDpi >= 300) //for 5.5 inch device OR for 432 ppi
            configuration.densityDpi = 400; //decrease "display size" by ~30
        else if (configuration.densityDpi >= 100) //for 4 inch device OR for 233 ppi
            configuration.densityDpi = 200; //decrease "display size" by ~30
        Log.d("TAG", "metrics density: " + metrics.density + "," + metrics.scaledDensity);
        metrics.scaledDensity = configuration.densityDpi * metrics.density;
        Log.d("TAG", "scaledDensity: " + metrics.scaledDensity);
        this.getResources().updateConfiguration(configuration, metrics);
    }

Это также, кажется, не приносит пользы моему макету. Это все еще становится огромным и дезориентированным. Кто-нибудь может мне сказать, что я могу сделать, чтобы размер был одинаковым, а системные настройки не влияли на мои макеты и дизайн?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Это не тот ответ, который вы ищете, но все же я хотел бы поделиться своим мнением об этом.

Прежде всего, эти настройки существуют не просто так. Это доступность. Люди с ограниченными возможностями или трудностями используют эти настройки для настройки пользовательского интерфейса в соответствии с их потребностями. Таким образом, вы не должны искать способ преодолеть эти настройки вообще.

Additinaly, если нет, вы должны прочитать Поддержка разных размеров экрана . Это даст вам представление о том, какой макет выбран системой и когда.

Но если вам все равно, то для размеров шрифта, если вы используете dp вместо sp, они не будут затронуты настройкой системы. Для уровня масштабирования нет рецепта. Вам необходимо обмануть систему, как в примере кода, и прикрепить эту обновленную конфигурацию к уровню приложения и активности. ИМХО, вам вообще не нужно ничего делать, это желание пользователя увеличить размер шрифта и уровень масштабирования, просто оставьте их в покое:)

В конце концов, если ваш пользовательский интерфейс испорчен этими настройками, это означает, что ваш пользовательский интерфейс не является адаптивным или адаптивным, и вы должны обновить свой пользовательский интерфейс и не пытаться отключить эти параметры.

0 голосов
/ 14 января 2019

использовать ограничение-макет, нет необходимости создавать большие и большие макеты, если вы используете ограничение-макет. И самое главное, используйте sp и dp.

ex. <dimen name="dm_40sp">40sp</dimen>

Sp автоматически настраивает размер в соответствии с разрешением экрана.

компоновка ограничений проще и эффективнее относительной компоновки. Попробуйте это, если спросите меня.

...