【问题标题】:How to set font size for items in Xamarin Picker?如何在 Xamarin Picker 中设置项目的字体大小?
【发布时间】:2017-04-15 22:51:17
【问题描述】:

我尝试在 Xamarin.Picker 中为我的 Android 应用更改项目字体大小。在我的项目中,我使用继承自 Picker 类的BindablePicker。来源here

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

我的渲染器类:

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

出于测试目的,我为Picker 设置了背景颜色,它工作正常。但是,在我的 PickerRenderer 类中,我只能访问 Control 类型的 Android.Widget.EditText 属性。

效果:

问题

如何访问Picker 项目,并为它们设置字体大小?这可能吗?

这是我的存储库,其中包含一个示例项目。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 这将改变所选值标签的字体大小。我想更改 Picker 项的字体大小,请参阅here
    【解决方案2】:

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

    您可能会更轻松,只需在表单代码中滚动您自己的选择器控件,使用可点击的标签弹出一个列表以供选择。

    我能够使用 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 类型。

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 2016-11-14
      • 1970-01-01
      • 2018-07-15
      • 2018-05-20
      • 1970-01-01
      • 2022-06-30
      • 2013-03-05
      • 2015-01-16
      相关资源
      最近更新 更多