2013-02-14 18 views
13

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

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

Drop down menu

यहाँ मेरी menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_browse" 
     android:title="Browse Subjects" 
     android:showAsAction="always" 
     android:actionLayout="@layout/action_layout_browse" 
     android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider" 
      /> 
    <item android:id="@+id/menu_settings" 
     android:title="Settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" /> 
</menu> 

मैं मान लिया ActionProviderClass जब कार्रवाई बार आइटम क्लिक किया जाता है मुझे एक कस्टम दृश्य का दृष्टांत करने की अनुमति होगी, लेकिन मैं एक तरह से बाहर काम नहीं कर सकता है - शायद मैं गलत रास्ते पर जा रहा हूँ।

इस पर कोई मदद बहुत सराहना की जाएगी! धन्यवाद!

अद्यतन: एक्शन बार स्टाइल के लिंक के लिए धन्यवाद लेकिन मैं बस एक ड्रॉपडाउन शैली नहीं बनाना चाहता हूं। मैं एक कस्टम दृश्य फुला देना चाहता हूँ। दृश्य डीबी प्रश्न आदि भी करेंगे।

+1

मैं एक नमूना है जो आप यहाँ पर छवि के रूप में तैनात किया है के लिए देख रहा हूँ के लिए, आप मुझे किसी भी नमूना उदाहरण प्रदान करें या संकेत कस्टम लटकती बना सकते हैं और गतिशील रूप से करने के लिए कैसे वहाँ पर मेनू आइटम जोड़ सकते हैं। – Naruto

+1

यूआई अच्छा दिखता है। क्या आपने ऐप पूरा किया? क्या यह डाउनलोड के लिए है? – Zen

उत्तर

11

ठीक है मैंने स्वयं एक समाधान तैयार किया। मूल रूप से actionProviderClass का उपयोग ActionBar में एक क्रिया दृश्य को तुरंत चालू करने के लिए किया जाता है। इस कक्षा में आप एक क्लिक पर श्रोता श्रोता को संलग्न कर सकते हैं। जब मैंने क्लिक किया तो मुख्य फ्रेम में ड्रॉपडाउन दृश्य को बढ़ाने के लिए मैंने इस श्रोता का उपयोग किया।

उदाहरण

public class BaseProvider extends ActionProvider { 

    protected final Context context; 
    protected final int layout; 
    protected final BaseProvider self; 
    protected View view; 
    protected int positionLeft = 0; 
    protected Dropdown dropdown; 

    public BaseProvider(Context context, int layout, Dropdown dropdown) { 
     super(context); 
     this.layout = layout; 
     this.context = context; 
     this.self = this; 
     this.dropdown = dropdown; 
    } 

    @Override 
    public View onCreateActionView() { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View view = inflater.inflate(this.layout, null); 

     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       self.onItemClick(); 
      } 
     }); 
     this.view = view; 
     return view; 
    } 

    public boolean onItemClick(){ 
     toggleDropdown(); 
     return true; 
    } 

    protected void toggleDropdown(){ 
     this.positionLeft = getRelativeLeft(view); 
     DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft); 
    } 

    protected int getRelativeLeft(View view) { 
     int[] loc = new int[2]; 
     view.getLocationOnScreen(loc); 
     return loc[0]; 
    } 
} 
+10

भयानक होगा अगर आप जानकारी प्रदान कर सकते हैं कि आपने ड्रॉपडाउन क्लास कैसे किया। क्या यह किसी अन्य विजेट पर आधारित है या यह किसी भी तरह से एक सूची दृश्य है? – jelgh

+0

एक्शनप्रोवाइडर में आइटम्स के लिए आप कैसे और कहां संलग्न करते हैं? – lschlessinger