Xamarin.forms 如何更改ListView项目的字体系列
我有一个ListView,我使用标准的“本机”模板和组Xamarin.forms 如何更改ListView项目的字体系列,xamarin.forms,Xamarin.forms,我有一个ListView,我使用标准的“本机”模板和组 如何设置组标题和项目中文本的字体?下面是一个在列表标题中设置动态布局选项的示例,您可以为单个标签预先设置这些属性并自定义标题。现在,您可以根据需要设置自己的字体系列、颜色或字体大小,也可以自定义标题单元格,它只是一个ItemTemplate <ListView x:Name="ListView" IsGroupingEnabled="true"> <ListView.GroupHeaderTemplate>
如何设置组标题和项目中文本的字体?下面是一个在
列表标题
中设置动态布局选项的示例,您可以为单个标签预先设置这些属性并自定义标题。现在,您可以根据需要设置自己的字体系列、颜色或字体大小,也可以自定义标题单元格,它只是一个ItemTemplate
<ListView x:Name="ListView" IsGroupingEnabled="true">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Label
HorizontalOptions="{Binding Optn}"
Text="{Binding Heading}"
VerticalOptions="{Binding Optn}" />
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding DisplayName}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
快乐编码 我已经用这个修复了文本和细节标签
public class MyTextCellRenderer : TextCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell = base.GetCell(item, reusableCell, tv);
if (cell.TextLabel.Font.FamilyName != CommonStyles.RegularFontName)
{
cell.TextLabel.Font = UIFont.FromName(
CommonStyles.RegularFontName, cell.TextLabel.Font.PointSize);
cell.DetailTextLabel.Font = UIFont.FromName(
CommonStyles.RegularFontName, cell.DetailTextLabel.Font.PointSize);
}
return cell;
}
}
对于节标题,这最初是有效的
UILabel.AppearanceWhenContainedIn(typeof(UITableView)).Font = ...
当节标题从屏幕上滚下并再次打开时,它将恢复为标准标题
但这是有效的
public class CustomTableViewRenderer : TableViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.Source = new CustomTableViewModelRenderer(e.NewElement);
}
}
}
public class CustomTableViewModelRenderer : UnEvenTableViewModelRenderer
{
public CustomTableViewModelRenderer(TableView model) : base(model)
{
}
public override void WillDisplayHeaderView(UITableView tableView, UIView headerView, nint section)
{
if (headerView is UITableViewHeaderFooterView view)
{
view.TextLabel.Font = UIFont.FromName(CommonStyles.RegularFontName, 18);
}
}
}
公共类CustomTableViewRenderer:TableViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(例如NewElement!=null)
{
Control.Source=新的CustomTableViewModelRenderer(例如NewElement);
}
}
}
公共类CustomTableViewModelRenderer:TableViewModelRenderer
{
公共CustomTableViewModelRenderer(TableView模型):基础(模型)
{
}
public override void WillDisplayHeaderView(UITableView表格视图、UIView headerView、第九节)
{
if(headerView为UITableViewHeaderFooterView视图)
{
view.textlab.Font=UIFont.FromName(CommonStyles.RegularFontName,18);
}
}
}
更改某些字体需要大量代码。在您的示例中没有提到字体系列。我希望避免使用自定义模板。在标题标签中可以使用道具FontFamily
并且它是ListView.GroupHeaderTemplate
属性当您想要使用font family时,您需要在某个地方指定它。两个参考链接:1)。2)