Xamarin.Forms Listview是否具有两行标签?
我正在将MonoTouch.Dialog应用程序转换为Xamarin.Forms 我在ListView中有一个单元格,它有一条“细节”线,应该有2行长,然后应该截断尾部Xamarin.Forms Listview是否具有两行标签?,xamarin,xamarin.forms,monotouch.dialog,Xamarin,Xamarin.forms,Monotouch.dialog,我正在将MonoTouch.Dialog应用程序转换为Xamarin.Forms 我在ListView中有一个单元格,它有一条“细节”线,应该有2行长,然后应该截断尾部 var lblDetail = new Label { LineBreakMode = LineBreakMode.TailTruncation, Text = "a really long string that should show 2 lin
var lblDetail = new Label
{
LineBreakMode = LineBreakMode.TailTruncation,
Text = "a really long string that should show 2 lines then ..."
};
如何设置“Lines=2”您可能需要自定义ListView:
<ListView x:Name="ListMenu" ItemsSource="{Binding _YourItems_}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding _YourText_}" TextColor="Black" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
即使文本不适合一行,它也会自动换行。以下代码对我来说很好:)
我用自定义渲染器解决了这个问题 这是我的xaml(在我的pcl项目中) 这是iOS的渲染器:
[assembly: ExportRenderer(typeof(MultiLineLabel), typeof(MultiLineLabelRenderer))]
namespace NameSpace.iOS.Renderers
{
public class MultiLineLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.LineBreakMode = UILineBreakMode.TailTruncation;
Control.Lines = 3;
}
}
}
}
[程序集:ExportRenderer(typeof(multileLabel),typeof(multileLabelRenderer))]
命名空间namespace.iOS.Renderers
{
公共类multileLabelRenderer:LabelRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
Control.LineBreakMode=UILineBreakMode.TailTruncation;
控制线=3;
}
}
}
}
您可能需要创建一个自定义单元格。XF实验室有一个ExtendedTextCell-它可以做您需要的事情,文档稀少,很难说。我的答案对您有帮助吗?我的答案解决了您的问题吗?因为它解决了我的问题;)如何在Android
中实现这一点?
<ListView ItemsSource="{Binding Cards}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Icon}"/>
<customRenderers:MultiLineLabel Text="{Binding Summary}"
Grid.Column="1"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
public class MultiLineLabel : Label
{
}
[assembly: ExportRenderer(typeof(MultiLineLabel), typeof(MultiLineLabelRenderer))]
namespace NameSpace.iOS.Renderers
{
public class MultiLineLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.LineBreakMode = UILineBreakMode.TailTruncation;
Control.Lines = 3;
}
}
}
}