2016-12-01 4 views
5

मैं अपने एंड्रॉइड ऐप के लिए Xamarin.Picker में आइटम का आकार बदलने की कोशिश करता हूं। मेरी प्रोजेक्ट में, मैं BindablePicker का उपयोग करता हूं जो पिकर क्लास से विरासत में मिलता है। स्रोत hereज़ैमरिन पिकर में आइटम्स के लिए फ़ॉन्ट आकार कैसे सेट करें?

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

परीक्षण प्रयोजनों के लिए मैं 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

कुछ शोध करने के बाद एच मुझे नहीं लगता कि यह एक सामान्य पिकर के लिए संभव है।

आपके पास एक क्लिक करने योग्य लेबल का उपयोग करके फ़ॉर्म कोड में अपना स्वयं का पिकर नियंत्रण रोल करने का एक आसान समय होगा जो चुनने के लिए एक सूची पॉप अप करता है।

मैं एंड्रॉइड शैलियों.एक्सएमएल फ़ाइल में शैलियों का उपयोग करके दिनांक या समय पिकर शैली बनाने में सक्षम था, लेकिन चूंकि एंड्रॉइड जेनेरिक पिकर विजेट में निर्मित नहीं है, इसलिए मुझे लगता है कि फॉर्म अपनी खुद की पिकर सूची रोल कर रहा है क्योंकि मैं कर सकता हूं उस थीम पर संवाद विजेट नहीं ढूंढें जो आपकी सूची टेक्स्ट आकार को बदलता है।

एक 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> 

उपरोक्त दिनांकपिकर के लिए टेक्स्ट आकार बदलता है (कोई कस्टम रेंडरर आवश्यक नहीं है)। इसके अलावा ग्राहक पिकर रेंडरर एक गलत नामक है ... यह वास्तव में संपादन टेक्स्ट फ़ील्ड को प्रतिपादित कर रहा है जो चयनित आइटम दिखाता है, और क्लिक पर पिकर सूची खोलने की अनुमति देता है।

मुझे पता है कि यह कोई समाधान नहीं है, लेकिन यह जांचने के दौरान मुझे जो कुछ मिला है, उसके बारे में सिर्फ एक संकेत है और एक सुझाव है कि यदि आप इस तरह के अनुकूलन चाहते हैं तो फॉर्म पिकर प्रकार का उपयोग न करना सबसे आसान है।

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

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

हो सकता है कि यह किसी को है कि एक Bindable पिकर के परिवर्तन फ़ॉन्ट आकार की तलाश में है मदद कर सकते हैं:

Control.TextSize = 30; 

OnElementChanged विधि पर:

2

मैं इस से लाइन जोड़ने को हल करने में सक्षम रहा है ।

+0

यह चयनित मूल्य लेबल का फ़ॉन्ट आकार बदल देगा। मैं पिकर आइटम के फ़ॉन्ट आकार में बदलना चाहता हूं, [यहां] देखें (https://i.stack.imgur.com/rv28w.png) – kamwysoc

संबंधित मुद्दे