2016-12-01 72 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

相關問題