2014-11-13 17 views
21

पर कस्टम दृश्य जोड़ना मैं नई टूलबार (लॉलीपॉप) में एक कस्टम दृश्य जोड़ने की कोशिश कर रहा हूं। लेकिन किसी भी तरह से टूलबार के नीचे दृश्य जोड़ा जाता है। यह ठीक काम कर रहा था जब मैंने actionBar.setCustomView का उपयोग किया लेकिन अब टूलबार पर माइग्रेट करने के बाद, यह काम नहीं करता है। नीचे कोड है। क्या परिवर्तन किए जाने चाहिए?टूलबार

टुकड़ा:

toolbar = (Toolbar) getView().findViewById(R.id.toolbar); 
    ((ActionBarActivity) getActivity()).setSupportActionBar(toolbar); 

    toolbar.setTitle(getString(R.string.app)); 



    ActionBar actionBar = ((ActionBarActivity) getActivity()) 
      .getSupportActionBar(); 

    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

    LayoutInflater inflater = (LayoutInflater) getActivity() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // inflate the view 
    final View view = inflater.inflate(R.layout.actionbar_search, null); 
    final ImageView searchIcon = (ImageView) view 
      .findViewById(R.id.search_icon); 
    final ClearableAutoCompleteTextView searchBox = (ClearableAutoCompleteTextView) view 
      .findViewById(R.id.search_box); 

    // start with the text view hidden in the action bar 
    searchBox.setVisibility(View.INVISIBLE); 
    searchIcon.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      toggleSearch(false, view); 
     } 
    }); 

    searchBox.setOnClearListener(new OnClearListener() { 

     @Override 
     public void onClear() { 
      toggleSearch(true, view); 
     } 
    }); 

    searchBox.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 


     } 

    }); 

toolbar.addView(view);    
// actionBar.setCustomView(view); // This worked previously 
//((ActionBarActivity)getActivity()).getSupportActionBar().setCustomView(view); //doesnt work with toolbar 

उत्तर

40

उपकरण पट्टी मुझे लगता है कि इस तरह से प्राप्त करने के लिए प्रबंधित किया है के साथ:

setSupportActionBar(toolbar); 
    View logo = getLayoutInflater().inflate(R.layout.view_logo, null); 
    toolbar.addView(logo); 

या आप भी सिर्फ अपने दृश्य उपकरण पट्टी एक्सएमएल को जोड़ सकते हैं, के रूप में यह सिर्फ एक ViewGroup है । इस तरह आपके पास लेआउट संपादक में पूर्वावलोकन होगा। कोई जावा कोड आवश्यक नहीं है।

+6

मैंने एपकोम्पेट 'Toolbar.addView()' का उपयोग करने का प्रयास किया लेकिन काम नहीं करता है। – patrickjason91

+1

यह मेरे लिए भी काम नहीं कर रहा है –

+0

^setSupportActionBar() – Clocker

8

मेरे लिए बहुत अच्छा काम करता है।

LayoutInflater mInflater=LayoutInflater.from(context); 
View mCustomView = mInflater.inflate(R.layout.toolbar_custom_view, null); 
toolbar.addView(mCustomView); 
1

बस उस दृश्य को बढ़ाएं जिसे आप टूलबार दृश्य को फुलाए गए विधि के दूसरे पैरामीटर के रूप में पास करना चाहते हैं; इस तरह से "addView" पर कॉल आवश्यक नहीं है:

setSupportActionBar(toolbar); 
View logo = getLayoutInflater().inflate(R.layout.view_logo, toolbar); 
संबंधित मुद्दे