Масштабирование пользовательского интерфейса относительно экрана - PullRequest
0 голосов
/ 27 октября 2018

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

То, что я хотел бы сделать, это масштабировать пользовательский интерфейс на экране, сохраняя пропорции.Думая, что это позволит мне отображать мой пользовательский интерфейс на телефонах с высоким и средним разрешением.В настоящее время я злоупотребляю жестко запрограммированными полями и, конечно, получаю менее приемлемые результаты при переходе на телефон с более высоким или низким разрешением.Я пробовал макеты стека и сетки.Горизонтальная проблема приглушена горизонтальными опциями, но вертикальная ужасна.

Я должен поддерживать iOS 6s и выше.Конверт поддержки Android «развивается».Достаточно сказать, что размеры и плотность экрана будут различаться.

Я думаю, что мой первоначальный вопрос может привести меня к более трудному пути, чем необходимо, поэтому я хотел спросить, как сообщество справляется с этим, прежде чем я применяю собственный код для каждого элемента, чтобы определить их размер.некоторая доля размеров экрана.Кажется, что это просто провалило тест.#CodeSmells

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

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

1 Ответ

0 голосов
/ 27 октября 2018

Создайте статический класс со всеми вашими размерами для использования внутри приложения. Что-то вроде:

public static class UiSettings
{
    public static double Scale = 1.0;
    public static void Init(double scale = 1.0)
    {
    Scale = scale;
    //can do more here, override props etc

    }

    public static double StandartTextSize => 12.0 * Scale;
    public static double StandartButtonMargin => new Thickness(2.0* Scale,2.0* Scale,2.0* Scale,2.0* Scale);

}

Теперь при запуске вы можете позвонить в зависимости от ваших потребностей / обнаруженного разрешения:

UiSettings.Init(1.2); //set scale etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...