我尝试在我的Android应用中更改Xamarin.Picker中的项目字体大小。在我的项目中,我使用从Picker类继承的type="hidden"
。来源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}}属性。
效果:
问题
如何访问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
答案 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类型。