Setting a custom font for Monotouch-dialog elements

好久不见. 提交于 2019-12-06 06:06:08

问题


Is there a way to set the fonts when a Monotouch Dialog class has been instansiated?

[Section("This is the header")]

This will render with the default blue text with drop shadow, but I can't find where that font is being set. Is there a way to overwrite which font and color it uses?


回答1:


I found a solution for those looking to replace ALL section headers in the entire solution. In MonoTouch.Dialog, there is a class named DialogViewController which is used when creating views with the reflection API. And in here, there's a method called GetViewForHeader(). Instead of sending back just the normal section.HeaderView, you can create a custom label and send that back.

public override UIView GetViewForHeader (UITableView tableView, int sectionIdx)
{
    var section = Root.Sections [sectionIdx];
    if (!string.IsNullOrEmpty(section.Caption))
    {
        var label = new UILabel();
        label.BackgroundColor = UIColor.FromRGB(89, 41, 17);
        label.TextColor = UIColor.FromRGB(255, 206, 52);
        label.ShadowColor = UIColor.Black;
        label.ShadowOffset = new SizeF(0, 1f);
        label.Font = UIFont.FromName("TitlingGothicFB Cond", 20);

        label.Text = section.Caption;

        return label;
    }
    return section.HeaderView;
}

public override float GetHeightForHeader (UITableView tableView, int sectionIdx)
{
    if (!string.IsNullOrEmpty(section.Caption))
        return 40f;
    return -1;
}

Remember to set the height, either manually or by getting the height from the label. You can also create a custom UIView, but a label was sufficient for me.




回答2:


When you use the Section like that you will use the UITableView standard rendering.

The only way to change that is to use the Element API instead of the reflection API, and provide a UIView where you draw the contents of the data yourself.



来源:https://stackoverflow.com/questions/4913363/setting-a-custom-font-for-monotouch-dialog-elements

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!