如何更改ListView项目的字体系列

时间:2018-06-19 17:15:12

标签: xamarin.forms

我有一个ListView,并且正在使用标准的“本机”模板和组。

如何设置组标题和项目中文本的字体?

2 个答案:

答案 0 :(得分:0)

这里是在LayoutOptions中设置动态ListHeader的示例,同样,您可以为各个标签预先设置这些属性并自定义标题。现在,您可以根据需要设置自己的字体系列,颜色或字体大小,或者可以自定义标题单元格,它只是一个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>

快乐编码!

答案 1 :(得分:0)

我已经使用此按钮修复了文字和详细信息标签...

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);
        }
    }
}

要更改某些字体,这是很多代码。