Установка максимальной высоты, которую может принимать приложение RowDefinition для приложения Xamarin - PullRequest
0 голосов
/ 25 февраля 2019

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

Как установить максимальную высоту для второй строки, чтобы первая строка не быласкрыт?

ContentPage.cs

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:renderer="clr-namespace:Project.renderers"
             x:Class="Project.MainPage">
    <Grid VerticalOptions="FillAndExpand">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <ListView VerticalOptions="Fill" Grid.Row="0"/>
        <StackLayout Orientation="Horizontal" 
                     VerticalOptions="EndAndExpand" 
                     BackgroundColor="Green" 
                     HorizontalOptions="Fill" 
                     Grid.Row="1">
            <renderer:ExpandableEditor VerticalOptions="FillAndExpand"
                                       HorizontalOptions="Center" 
                                       MaxLength="3000" 
                                       AutoSize="TextChanges" 
                                       TextColor="Black"/>
        </StackLayout>
    </Grid>
</ContentPage>

ExpandableEditor.cs

public class ExpandableEditor : Editor
{
    public ExpandableEditor()
    {
        TextChanged += OnTextChanged;
    }

    ~ExpandableEditor()
    {
        TextChanged -= OnTextChanged;
    }

    private void OnTextChanged(object sender, TextChangedEventArgs e)
    {
        InvalidateMeasure();
    }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Вы не можете установить MaximumHeight для RowDefinition.Вы должны установить максимальную высоту для VisualElement, который помещается в строку.Вы можете сделать это с помощью свойства MinimumHeightRequest.

Примечание. MinimumHeightRequest выберет минимальное значение между запрошенной высотой и запрошенной минимальной высотой.( Источник )

** Обновление **

Аналогичный вопрос был задан в StackOverflow около 3 лет назад.

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