2016-12-01 74 views
5

我尝试在Xamarin.Picker中更改我的Android应用的项目字体大小。在我的项目中,我使用从Picker类继承的BindablePicker。来源here如何在Xamarin Picker中设置物品的字体大小?

enter image description here

我花了一些时间做研究,我发现,我应该创建一个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类中,我只能访问Control属性,它的类型为Android.Widget.EditText

的影响:

enter image description here

问题

如何访问到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

回答

1

一些researc后h我不认为这是通用选择器的可能性。

您可能会有一个更容易的时间,只需使用可点击的标签在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类型。

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

也许这可以帮助别人,正在寻找一个可绑定拾取的改变字体大小。

+0

这将更改所选值标签的字体大小。我想更改为拾取器项目的字体大小,请参阅[这里](https://i.stack.imgur.com/rv28w.png) – kamwysoc

相关问题