如何设置Xamarin Picker中项目的字体大小?

时间:2016-12-01 10:32:02

标签: android xamarin fonts xamarin.android xamarin.forms

我尝试在我的Android应用中更改Xamarin.Picker中的项目字体大小。在我的项目中,我使用从Picker类继承的type="hidden"。来源here

enter image description here

我花了一些时间做研究,我发现我应该创建一个BindablePicker类并渲染Picker。

我的渲染器类:

PickerRenderer

出于测试目的,我为public class BindablePickerRenderer : PickerRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) { base.OnElementChanged(e); var picker = e.NewElement; BindablePicker bp = (BindablePicker)this.Element; if (this.Control != null) { var pickerStyle = new Style(typeof(BindablePicker)) { Setters = { new Setter { Property = VisualElement.BackgroundColorProperty, Value = Color.Red } } }; picker.Style = pickerStyle; } } } 设置了backgroundColor,它运行正常。但是,在我的Picker课程中,我只能访问属于PickerRenderer的{​​{1}}属性。

效果:

enter image description here

问题

如何访问Control项目并为其设置字体大小?这可能吗?

这是我的示例项目的存储库。

https://github.com/k8mil/PickerRendererXamarin

相关链接

https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/

Changing the default text color of a Picker control in Xamarin Forms for Windows Phone 8.1

Font size in Picker control in xamarin forms

2 个答案:

答案 0 :(得分:2)

我已经能够通过添加以下行来解决这个问题:

Control.TextSize = 30;

OnElementChanged方法:

public class BindablePickerRenderer : PickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged(e);

        if (this.Control != null)
        {
            Control.TextSize = 30;
        }
    }
}

也许这可以帮助那些正在寻找更改Bindable选择器字体大小的人。

答案 1 :(得分:1)

经过一些研究后,我认为对于通用选择器来说这是不可能的。

使用弹出列表可供选择的可点击标签,您可以更轻松地在Forms代码中滚动自己的选取器控件。

我能够使用Android styles.xml文件中的样式设置日期或时间选择器的样式,但是由于Android没有内置的通用选择器窗口小部件,我想,Forms正在滚动它自己的选择器列表,因为我可以'找到更改列表文本大小的主题的对话框小部件。

对于DatePicker,我可以将以下内容添加到styles.xml中的主样式元素:

<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>

然后在style.xml中添加一个新的样式元素

<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:textSize">60sp</item>
</style>

以上确实更改了DatePicker的文本大小(不需要自定义渲染器)。此外,客户选择器渲染器有点用词不当......它实际上只是渲染显示所选项目的编辑文本字段,并允许在单击时打开选择器列表。

我知道这不是一个解决方案,而只是表明我在查看时发现了什么,并建议如果你想要这样的自定义,最简单的方法是不要使用Forms Picker类型。