Я настраиваю домашний экран, который ведет к другим разделам с взаимодействиями внутри них, у меня все работает, но при меньших размерах экрана тест для заголовка над кнопкой переключается на две строки, затем начинает перекрывать кнопку.
Я написал немного, чтобы попытаться заставить шрифт менять размеры при изменении экрана, но, похоже, он ничего не делает. Метки, которые я редактирую, являются общедоступными, поэтому они должны меняться, верно? Нерабочее изображение на выходе
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; }
}
Размер шрифта должен изменяться при изменении размера экрана, но не изменяется. Нет ошибок