Шрифт не изменяется при изменении размера представления - PullRequest
0 голосов
/ 26 октября 2019

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

Я написал немного, чтобы попытаться заставить шрифт менять размеры при изменении экрана, но, похоже, он ничего не делает. Метки, которые я редактирую, являются общедоступными, поэтому они должны меняться, верно? Нерабочее изображение на выходе

void OnContentViewSizeChanged(object sender, EventArgs args)
{
    ContentView view = (ContentView)sender;
    // Portrait mode
    if (view.Width > view.Height)
    {
        view.WidthRequest = view.Height;
        view.HeightRequest = view.Height;
    }
    else
    {
        view.HeightRequest = view.Width;
        view.WidthRequest = view.Width;
    }
    //Do FontCalc for button Text
    FontCalc buttonTextLowerFontCalc = new FontCalc(buttonTextLabel, 10, view.Width);
    FontCalc buttonTextupperFontCalc = new FontCalc(buttonTextLabel, 100, view.Width);

    while (buttonTextupperFontCalc.FontSize - buttonTextLowerFontCalc.FontSize > 1)
    {
        double fontSize = (buttonTextLowerFontCalc.FontSize + buttonTextupperFontCalc.FontSize) / 2;

        FontCalc newFontCalc = new FontCalc(buttonTextLabel, fontSize, view.Width);

        if(newFontCalc.TextHeight > view.Height)
        {
            buttonTextupperFontCalc = newFontCalc;
        }
        else
        {
            buttonTextLowerFontCalc = newFontCalc;
        }
    }

    buttonTextLabel.FontSize = buttonTextLowerFontCalc.FontSize;
    buttonTextLabel.Text = buttonTextLabel.Text.Replace("??", buttonTextLabel.FontSize.ToString("F0"));

    //Do FontCalc for title Text
    FontCalc titleTextLowerFontCalc = new FontCalc(titleTextLabel, 10, view.Width);
    FontCalc titleTextupperFontCalc = new FontCalc(titleTextLabel, 100, view.Width);

    while (titleTextupperFontCalc.FontSize - titleTextLowerFontCalc.FontSize > 1)
    {
        double fontSize = (titleTextLowerFontCalc.FontSize + titleTextupperFontCalc.FontSize) / 2;

        FontCalc newFontCalc = new FontCalc(titleTextLabel, fontSize, view.Width);

        if (newFontCalc.TextHeight > view.Height)
        {
            titleTextupperFontCalc = newFontCalc;
        }
        else
        {
            titleTextLowerFontCalc = newFontCalc;
        }
    }

    titleTextLabel.FontSize = titleTextLowerFontCalc.FontSize;
    titleTextLabel.Text = titleTextLabel.Text.Replace("??", titleTextLabel.FontSize.ToString("F0"));
}

struct FontCalc
{
    public FontCalc(Label label, double fontSize, double containerWidth)
    {
        FontSize = fontSize;

        label.FontSize = fontSize;
        SizeRequest sizeRequest = label.Measure(containerWidth, Double.PositiveInfinity);

        TextHeight = sizeRequest.Request.Height;
    }
    public double FontSize { private set; get; }
    public double TextHeight { private set; get; }
}

Размер шрифта должен изменяться при изменении размера экрана, но не изменяется. Нет ошибок

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