如何在 xamarin 窗体中使用 2 行设置列表视图说明



我有一个列表视图,它有一个标题和描述,所以我只想显示前 2 行(因为描述有超过 2 行(,并且在行尾想要显示 3 个点 (...

这是我的列表视图-

<ListView x:Name="OrderView" RowHeight="70" ItemSelected="ItemTapped" BackgroundColor="#ffffff">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell Height="70">
                <ContentView Padding="10,10,10,10">
                    <StackLayout Spacing="0">
                        <Label Text="{Binding FullPathName}" TextColor="Black" FontSize="Small" HorizontalOptions="StartAndExpand" HeightRequest="20" />
                        <Label Text="{Binding Description}" TextColor="Gray" FontSize="Micro" HorizontalOptions="StartAndExpand" HeightRequest="30"/>
                    </StackLayout>
                </ContentView>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

怎么做?

如果我了解了这个问题,你可以使用自定义渲染器来做到这一点。这里有一个描述 2 行标签与尾截断

例如,iOS应该是这样的

    [assembly: ExportRenderer(typeof(TwoLineLabel), typeof(TwoLineLabelRenderer))]
namespace MyApp.iOS
{
    public class TwoLineLabelRenderer : LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);
            Control.Lines = 2;
        }
    }
}

和风景...

 TwoLineLabel Heading = new TwoLineLabel()
{
        LineBreakMode = LineBreakMode.TailTruncation
};

对于安卓应该是这样的

'public class TwoLineLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs e)
{
base.OnElementChanged(e);
                if (Control != null)
                {
                    Control.LayoutChange += (s, args) =>
                    {
                        Control.Ellipsize = TextUtils.TruncateAt.End;
                        Control.SetMaxLines(2);
                    };
                }
            }
        }

最新更新