Forms9Patch - автоматическое изменение размера метки Xamarin - ограничивает автоподбор и начальный размер шрифта - PullRequest
0 голосов
/ 02 июля 2019

Использование Forms9Patch в Xamarin Forms. Я могу динамически изменять размер шрифта при работе в UWP и изменении размера окна по горизонтали. Размер отлично.

Однако у меня есть несколько проблем, которые я не решаю ...

  1. Когда я сжимаю окно по вертикали, размер текста не изменяется. Я делаю

    Lines = 1;
    AutoFit = Forms9Patch.AutoFit.Width;
    LineBreakMode = LineBreakMode.NoWrap;
    

Я вернулся сюда - https://baskren.github.io/Forms9Patch/guides/Label.html и перечитал его. Это говорит о наложении границ автоподбора для достижения этой цели. Я пытался и не могу заставить его работать. Какой правильный синтаксис, чтобы заставить это работать?

  1. Начальный размер шрифта для метки. Я жестко кодирую это прямо сейчас. Есть ли способ динамически изменить его размер при запуске?

  2. У меня есть обходной путь, но есть ли встроенный способ, которым Forms9Patch работает с масштабированием экрана?

1 Ответ

1 голос
/ 03 июля 2019

В качестве альтернативы, вы можете попытаться использовать что-то вроде этого, где вы добавляете ваше личное поле label внутри ContentView, а затем добавляете к нему событие SizeChanged

ContentView contentView = new ContentView
{
          Content = label
};
contentView.SizeChanged += OnContentViewSizeChanged;

и в событие

void OnContentViewSizeChanged(object sender, EventArgs args)
{
         string text = "Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams. Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.";
         View view = (View)sender;

         // Line height is 1.2 if it's iOS or Android, but 1.3 for UWP
         double lineHeight = 1.3;
         double charWidth = 0.5;
         text = String.Format(text, lineHeight, charWidth, view.Width, view.Height);
         int charCount = text.Length;
         int fontSize = (int)Math.Sqrt(view.Width * view.Height / (charCount * lineHeight * charWidth));
         int lineCount = (int)(view.Height / (lineHeight * fontSize));
         int charsPerLine = (int)(view.Width / (charWidth * fontSize));
         label.Text = text;
         label.FontSize = fontSize;
}

Вот некоторая официальная документация , которая рекомендует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...