2014-11-13 23 views
21

Próbuję dodać niestandardowy widok do nowego paska narzędzi (Lollipop). Ale jakoś widok zostanie dodany poniżej paska narzędzi. To działało dobrze, gdy użyłem actionBar.setCustomView, ale teraz po migracji do paska narzędzi, to nie działa. Poniżej znajduje się kod. Jakie zmiany należy wprowadzić?Dodawanie niestandardowego widoku do paska narzędzi

Fragment:

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 

Odpowiedz

40

Z paska narzędzi udało mi się osiągnąć tak:

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

Albo można też po prostu dodaj swój pogląd na xml paska narzędzi, jak to tylko ViewGroup . W ten sposób będziesz miał podgląd w edytorze układu. Nie wymaga kodu java.

+6

Próbowałem użyć appcompat 'Toolbar.addView()' ale nie działa. – patrickjason91

+1

To też nie działa dla mnie –

+0

^spróbuj usunąć setSupportActionBar() – Clocker

8

Działa doskonale dla mnie.

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

Po prostu nadmuchaj widok, który chcesz dodać, mijając widok paska narzędzi jako drugi parametr metody nadmuchiwania; W ten sposób wywołanie "addView" nie jest konieczne:

setSupportActionBar(toolbar); 
View logo = getLayoutInflater().inflate(R.layout.view_logo, toolbar); 
Powiązane problemy