2014-09-26 13 views
13

मुझे एंड्रॉइड (नेक्सस 5) पर Xamarin.Forms (संस्करण 1.2.2) के साथ कोई समस्या है। Button.Text का संरेखण अक्सर एक क्लिक करने के बाद केंद्रित नहीं होता है।Xamarin.Forms: क्लिक के बाद गलत बटन टेक्स्ट संरेखण (एंड्रॉइड)

एक छोटी परियोजना में, मुझे पता चला कि यूआई को अद्यतन करने से समस्या का कारण बनता है।

public class App 
{ 
    public static Page GetMainPage() 
    { 
     var label = new Label { 
      Text = "label", 
     }; 
     var buttonBad = new Button { 
      Text = "buttonBad", 
      Command = new Command(() => label.Text += "1"), 
     }; 
     var buttonGood = new Button { 
      Text = "buttonGood", 
     }; 

     return new ContentPage { 
      Content = new StackLayout { 
       Children = { 
        buttonBad, 
        buttonGood, 
        label, 
       } 
      } 
     }; 
    } 
} 

"buttonBad" (label.Text अद्यतन करना) पर एक क्लिक का कारण बनता है इस बटन का पाठ संरेखण अब और केंद्रित नहीं किया जाना है। "बटन गॉड" पर एक क्लिक समस्या का कारण नहीं है।

क्या इस समस्या को हल करने के लिए कोई अच्छा कामकाज है?

इस तरीके को भी जटिल लगती है: http://forums.xamarin.com/discussion/20608/fix-for-button-layout-bug-on-android

संपादित करें: एक प्रोग्राम के यूआई के संपादित भी मामलों बग। एक छोटी प्रतीक्षा के बाद label.Text को एसिंक विधि में बदलना एक बटन के बाद अपने टेक्स्ट को गलत तरीके से संरेखित करने के लिए "बटन गॉड" की ओर जाता है।

EDIT2: मैं GitHub पर एक उदाहरण/परीक्षण प्रोजेक्ट बनाया: https://github.com/perpetual-mobile/ButtonTextAlignmentBug.git संरेखण सही है, जब StackLayout एक AbsolutLayout ने ले ली है, लेकिन मैं StackLayout अच्छी तरह से काम करने की जरूरत है।

+0

ध्यान दें कि" अच्छा "बटन पर क्लिक करके केवल पुनर्निर्माण के बिना काम करता बटन "पहली बार क्लिक किया गया था। – Falko

+0

अभी भी 1.2.3-प्रीरलीज में भी मौजूद है 4. –

+0

यहां एक ही समस्या है। उम्मीद है कि यह जल्द ही तय हो जाएगा। –

उत्तर

13

ठीक है, यह मूर्खतापूर्ण बग के साथ काम के घंटे के बाद, मैं इसे एक कस्टम रेंडरर और अधिभावी ChildDrawableStateChanged को लागू करने से हल हो: जब तक "बुरा

public override void ChildDrawableStateChanged(Android.Views.View child) 
{ 
    base.ChildDrawableStateChanged(child); 
    Control.Text = Control.Text; 
} 
+0

हाँ! मेरे लिये कार्य करता है। – Falko

+0

मेरे लिए भी! perfekt :) बड़ा thx! –

+0

मजेदार तथ्य: दो बटनों के लिए 'heightRequest = 20' (या समान मान) और' वर्टिकलऑप्शन = लेआउटऑप्शन। फिल और एक्सपैंड 'सेट करना इस फिक्स के साथ भी कैप्शन कूदता है (एक्सएफ 1.2.3 पर परीक्षण किया जाता है)। लेकिन यह एक असंभव नक्षत्र है, मुझे लगता है। – Falko

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