2016-12-01 80 views
5

Android uygulamam için Xamarin.Picker öğesindeki yazı tipi boyutunu değiştirmeyi deniyorum. Projemde, Picker sınıfından miras alan BindablePicker kullanıyorum. Kaynak here.Xamarin Seçici'deki öğeler için yazı tipi boyutu nasıl ayarlanır?

enter image description here

Araştırma yapabilecek biraz zaman geçirdim ve ben PickerRenderer sınıf oluşturmak ve Seçici oluşturması gerektiğini ortaya koymuştur.

Benim Oluşturucu sınıfı: Test amaçları için

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

Ben Picker için backgroundColor ayarlamak ve iyi çalışıyor. Ancak, PickerRenderer sınıfımda yalnızca Android.Widget.EditText türünde Control özelliğine erişimim var.

etkisi:

enter image description here

Soru

Ben Picker öğelere erişim ve onlar için yazı tipi boyutunu ayarlayabilirsiniz nasıl

? Mümkün mü?

Örnek bir proje ile depom İşte.

https://github.com/k8mil/PickerRendererXamarin

İlgili linkler bazı Araştırma, sonra

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

cevap

1

Bu genel bir seçici için mümkün olduğunu düşünmüyorum.

Forms kodunda, kendi seçebileceğiniz bir listeyi açan tıklanabilir bir etiket kullanarak kendi seçimlik denetiminizi yuvarlama daha kolay bir zamana sahip olabilirsiniz.

Android styles.xml dosyasındaki stilleri kullanarak bir tarih veya zaman seçicisini biçimlendirmeyi başardım, ancak Android'de yerleşik bir genel seçici widget'ı olmadığından, Formlar'ın kendi seçtikleri Liste metni boyutunuzu değiştiren temaya iletişim widget'ını bulun. Bir DatePicker için

, sadece styles.xml ana stil öğesine aşağıdaki ekleyebilirsiniz:

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

ve sonra style.xml yeni stil öğesi ekleyin

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

Yukarıdaki bir DatePicker için metin boyutunu değiştirir (hiçbir özel render gerekli). Ayrıca, müşteri seçici işleyicisi, bir yanlış tanıtıcının bir parçasıdır ... gerçekten, yalnızca seçilen öğeyi gösteren düzenleme metin alanını oluşturur ve tıklama listesinde seçicinin açılmasını sağlar.

Bunun bir çözüm olmadığını biliyorum, ancak bunu kontrol ederken ne bulduğuma dair bir gösterge ve bu tür bir özelleştirmeyi isterseniz Formlar Seçici türünü kullanmanın en kolay yolu olduğuna dair bir öneri.

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

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

Belki bu Bindable seçicinin değişim yazı tipi boyutu arıyor biri yardımcı olabilir: OnElementChanged şekli

Control.TextSize = 30; 

:

2

Bu satır eklemek çözmek mümkün olmuştur .

+0

Bu, seçilen değer etiketinin yazı tipi boyutunu değiştirecektir. Seçici öğelerin yazı tipi boyutuna geçmek istiyorum, bkz. [Burada] (https://i.stack.imgur.com/rv28w.png) – kamwysoc