Размер вертикальных элементов uistackview - PullRequest
0 голосов
/ 21 июня 2020

Мой пользовательский интерфейс состоит из представления горизонтального стека, в которое встроено несколько представлений вертикального стека. Каждое представление вертикального стека состоит из значка и текстовой области размером максимум 2 строки.

У меня проблема с вертикальными представлениями стека, растягивающими значок в зависимости от текста ниже, как показано на следующем снимке экрана:

enter image description here

I'd like the stack views to have the icons and text areas sized properly for the entire row to get the following (Android version):

введите описание изображения здесь

Вот код:

    // Create the 5 smileys (only one show here)
    var val = m_currentItem.m_scoreDesciptions.val[0];
    this.ico_smiley_1 = new UIImageView(UIImage.FromBundle(string.IsNullOrEmpty(val.icon) ? "ico_smiley_1.png" : "ico_" + val.icon));
    this.ico_smiley_1.TintColor = string.IsNullOrEmpty(val.color) ? new UIColor(red: 1.00f, green: 0.00f, blue: 0.00f, alpha: 1.00f) : Utilities.UIColorFromAndroidHexValue(val.color);
    this.text_smiley_1 = new UITextView { Text = val.name, ScrollEnabled = false, Font = FontHelpers.GenerateUIFont("Ubuntu-Light", UIFontTextStyle.Caption2), };
    this.text_smiley_1.TextContainer.MaximumNumberOfLines = 3;
    this.text_smiley_1.TextContainer.LineBreakMode = UILineBreakMode.WordWrap;
    this.text_smiley_1.SizeToFit();

   // Create the experience horizontal stackview that will hold the smiley and text couples
    this.experiences = new UIStackView
    {
        TranslatesAutoresizingMaskIntoConstraints = false,
        Axis = UILayoutConstraintAxis.Horizontal,
        Distribution = UIStackViewDistribution.FillEqually,
        Alignment = UIStackViewAlignment.Fill,
        Spacing = 10f
    };

    // 1 Create the first smiley/text couple held in its own vertical stackview
    this.experience_1 = new UIStackView
    {
        Axis = UILayoutConstraintAxis.Vertical,
        Distribution = UIStackViewDistribution.FillProportionally,
        Alignment = UIStackViewAlignment.Center
    };

    this.experience_1.AddArrangedSubview(this.ico_smiley_1);
    this.experience_1.AddArrangedSubview(this.text_smiley_1);

    // Add the first icon and text couple to the whole experience
    this.experiences.AddArrangedSubview(this.experience_1);

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

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Проблемы, решаемые:

  • Установка явного размера для UIImageView
  • Использование меньшего размера шрифта для UITextView
...