2016-02-18 5 views
10

मैं android.support.v7.widget.Toolbar के ओवरफ़्लो मेनू पर SwitchCompat विजेट का उपयोग करने का प्रयास कर रहा हूं लेकिन मैं इसे काम पर नहीं ला सकता, यह हमेशा खाली दिखाई देता है।क्या मैं एंड्रॉइड.support.v7.widget.Toolbar के ओवरफ़्लो मेनू पर एक्शनलेआउट का उपयोग कर सकता हूं?

यहाँ मेरी मेनू परिभाषा है: यहाँ

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     tools:context="com.oveflowtest.ScrollingActivity"> 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     app:showAsAction="never"/> 
    <item android:id="@+id/test" 
      app:actionLayout="@layout/testlayout" 
      app:showAsAction="never"/> 
</menu> 

और testlayout है: अगर मैं showAsActionnever के बजाय always करने के लिए बदल

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
<android.support.v7.widget.SwitchCompat 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:text="test"/> 
</LinearLayout> 

इसके अलावा तो यह उपकरण पट्टी, लेकिन मैं डॉन पर ठीक से पता चलता यह वहां नहीं चाहता है, मैं इसे ओवरफ्लो मेनू पर चाहता हूं जो 3 बिंदुओं को दबाते समय खुलता है।

मुझे पता है कि एक चेकमार्क का उपयोग करने का एक विकल्प है, लेकिन जिस डिज़ाइन का मैं स्विच के लिए कॉल कर रहा हूं।

धन्यवाद।

उत्तर

11

यह संभव नहीं है।

ऐसा इसलिए है क्योंकि actionLayout केवल तभी उपयोग किया जाता है जब आइटम को क्रिया के रूप में दिखाया जाता है। यह setActionView के बराबर है और, documentation से:

इस मेनू आइटम के लिए एक कार्य दृश्य सेट। UI में स्वचालित रूप से जेनरेट किए गए मेनू आइटम तत्व के स्थान पर एक क्रिया दृश्य प्रदर्शित किया जाएगा जब यह आइटम किसी अभिभावक के भीतर एक क्रिया के रूप में दिखाया गया हो।

तो, आप एक कस्टम दृश्य अगर यह एक कार्रवाई के रूप में प्रयोग किया जाता है बढ़ सकता है (यदि showAsActionnever अपेक्षा के अनुरूप है, तो यह कार्रवाई के रूप में दिखाया नहीं कर रहा है,)।

अब, कहीं और छिपा हुआ, documentation for ActionProvider में, वहाँ इस है:

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

यह स्पष्ट है कि अतिप्रवाह मेनू नहीं प्रदर्शन कस्टम दृश्य कर सकते हैं कहा गया है।

[संपादित करें: संभावित समाधान]
आप वास्तव में इसे उस तरह से प्रदर्शित करने के लिए चाहते हैं, तो आप कर सकते हैं नकली PopupWindow के साथ एक अतिप्रवाह मेनू है, लेकिन फिर आप कुछ उपकरणों में मंच या के बाद भी साथ संगति खो सकते हैं एंड्रॉइड में अपग्रेड (मान लीजिए ... आपने ओवरफ्लो मेनू को अनुकरण करने के लिए तीन राउंड डॉट्स का इस्तेमाल किया, लेकिन बाद में इसे एंड्रॉइड पर स्क्वायर में बदल दिया गया, आपका ऐप अजीब लगेगा। Menu के साथ इसे काम करने के लिए अतिरिक्त प्रयास भी है। सीधा होगा।

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