2016-06-30 10 views
7

this लिंक से काम नहीं करता है।इनपुट ट्रांस्पेरेंट = सत्य Xamarin फॉर्म एंड्रॉइड

गलत अगर तत्व इनपुट प्राप्त करना चाहिए; सत्य अगर तत्व इनपुट प्राप्त नहीं करना चाहिए और इसके बजाय, नीचे दिए गए तत्व में इनपुट पास करना चाहिए। डिफ़ॉल्ट गलत है।

मुझे क्या चाहिए, प्रवेश क्षेत्र को उपयोगकर्ता से इनपुट प्राप्त करने की अनुमति नहीं दी जानी चाहिए।

InputTransparent=true आईओएस में अच्छी तरह से काम करता है लेकिन एंड्रॉइड में काम नहीं करता है, यह अभी भी उपयोगकर्ता को इनपुट देने की अनुमति देता है।

मैंने IsEnabled=false की कोशिश की लेकिन यह मेरे प्रवेश क्षेत्र के रूप में बदलाव करता है और मुझे वह नहीं चाहिए।

क्या यह किसी प्रकार की बग है?

उत्तर

0

इनपुट ट्रांस्पेरेंट एंड्रॉइड के लिए काम नहीं करते हैं। मैं बस StackLayout के लिए प्रस्तुत करना निर्मित:

एंड्रॉयड परियोजना में
public class StackLayoutAdd :StackLayout 
{ 
} 

:

[assembly: ExportRenderer(typeof(StackLayoutAdd), typeof(StackLayoutAddCustom))] 
..... 
public class StackLayoutAddCustom : VisualElementRenderer<StackLayout> 
{ 
    public override bool DispatchTouchEvent(MotionEvent e) 
    { 
     base.DispatchTouchEvent(e); 
     return !Element.InputTransparent; 
    } 
} 

मैं अपने XAML में इस का उपयोग करें:

पीसीएल परियोजना में

<StackLayoutAddCustom InputTransparent={Binding IsReadOnly}> 
    <Editor /> 
    .... 
</StackLayoutAddCustom> 

इस काम है बच्चों के नियंत्रण के लिए।

0

पर this question आधारित: इस आग लगातार स्क्रीन को स्पर्श है, तो कस्टम रेंडरर लागू करने और DispatchTouchEvent

public override bool DispatchTouchEvent(MotionEvent e) 
     { 
      if (Element.InputTransparent) 
      { 
       return false; 
      } 
      return base.DispatchTouchEvent(e); 
     } 
ओवरराइड