2016-12-01 21 views
5

Próbuję zmienić rozmiar czcionki elementów w Xamarin.Picker dla mojej aplikacji na Androida. W moim projekcie używam BindablePicker, który dziedziczy z klasy Picker. Źródło here.Jak ustawić rozmiar czcionki dla elementów w Xamarin Picker?

enter image description here

Spędziłem trochę czasu, aby zrobić badania i okazało się, że należy utworzyć klasę PickerRenderer i renderować Picker.

Moja klasa renderujący:

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

Dla celów testowych ustawić backgroundColor dla Picker i działa dobrze. Jednak w mojej klasie PickerRenderer mam dostęp tylko do właściwości Control, która jest typu Android.Widget.EditText.

Efekt:

enter image description here

Pytanie

Jak mogę uzyskać dostęp do Picker elementów i ustawić rozmiar czcionki dla nich? czy to możliwe?

Oto moje repozytorium z przykładowym projektem.

https://github.com/k8mil/PickerRendererXamarin

Powiązane linki

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

Odpowiedz

1

Po pewnym researc h Nie sądzę, że jest to możliwe w przypadku ogólnego wyboru.

Najprawdopodobniej będzie Ci łatwiej po prostu przetasować kontrolkę wyboru w kodzie formularza za pomocą klikalnej etykiety, która wyświetli listę do wyboru.

Udało mi się ustawić selektor daty lub czasu za pomocą stylów w pliku Android styles.xml, ale ponieważ Android nie ma wbudowanego generycznego widgetu wyboru, wyobrażam sobie, że Forms przetacza własną listę wyboru, tak jak ja znaleźć widget okna dialogowego do motywu, który zmienia rozmiar tekstu listy.

Dla DatePicker, mogę tylko dodać następujące głównego elementu stylu w styles.xml:

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

a następnie dodać nowy element styl w style.xml

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

powyżej zmienia rozmiar tekstu dla obiektu DatePicker (nie jest wymagany żaden niestandardowy renderer). Również renderer wyboru klienta jest trochę mylący ... w rzeczywistości renderuje tylko pole edycji, które pokazuje wybrany element i umożliwia otwarcie listy wyboru po kliknięciu.

Wiem, że to nie jest rozwiązanie, ale tylko wskazanie, co znalazłem podczas sprawdzania tego i sugestię, że najprościej jest nie używać typu selektora formularzy, jeśli chcesz takie dostosowanie.

2

I udało się rozwiązać ten problem, należy dodać linię:

Control.TextSize = 30; 

Na OnElementChanged metody:

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

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

Może to pomóc komuś, kto szuka dopasuj rozmiar czcionki o Bindable kompletacji .

+0

Spowoduje to zmianę rozmiaru czcionki wybranej etykiety wartości. Chcę zmienić rozmiar czcionki elementów Picker, patrz [tutaj] (https://i.stack.imgur.com/rv28w.png) – kamwysoc