我有一个列表视图,它有一个标题和描述,所以我只想显示前 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);
};
}
}
}