2015-09-01 13 views
8

अब मैं अगले कोड है:एंड्रॉइड टूलबार में खोज दृश्य में बटन कैसे जोड़ें?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_toolbar_reader, menu); 

    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) searchItem.getActionView(); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    if(null!=searchManager) { 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    } 
    searchView.setIconifiedByDefault(false); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 
    return true; 
} 

मैं दृश्य बटन अगले खोज खोज और (WebView में खोज) खोज पिछले करने के लिए अनुलग्न करना चाहते हैं। ई। जी। मैं इस (जब SearchView uncollapsed drawed तीर ही दिखाई देनी चाहिए) प्राप्त करना चाहते हैं: example

मैं ऐसा कैसे कर सकता है?

उत्तर

6

तो, मैं अपने गतिविधि में इस कोड के माध्यम से इसे हल:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_toolbar_reader, menu); 


    final MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) searchItem.getActionView(); 

    LayoutParams navButtonsParams = new LayoutParams(toolbar.getHeight() * 2/3, toolbar.getHeight() * 2/3); 

    Button btnNext = new Button(this); 
    btnNext.setBackground(getResources().getDrawable(R.drawable.ic_keyboard_arrow_down_white_48pt_3x)); 

    Button btnPrev = new Button(this); 
    btnPrev.setBackground(getResources().getDrawable(R.drawable.ic_keyboard_arrow_up_white_48pt_3x)); 

    searchStats = new TextView(this); 

    ((LinearLayout) searchView.getChildAt(0)).addView(searchStats); 
    ((LinearLayout) searchView.getChildAt(0)).addView(btnPrev, navButtonsParams); 
    ((LinearLayout) searchView.getChildAt(0)).addView(btnNext, navButtonsParams); 

    ((LinearLayout) searchView.getChildAt(0)).setGravity(Gravity.BOTTOM); 

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      searchQuery = newText; 
      if (!newText.equals("")) { 
       lawTextWebView.findAllAsync(newText); 
      } else { 
       lawTextWebView.clearMatches(); 
      } 
      return false; 
     } 
    }); 

    btnNext.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!searchQuery.equals("")) { 
       lawTextWebView.findNext(true); 
      } 
     } 
    }); 

    btnPrev.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!searchQuery.equals("")) { 
       lawTextWebView.findNext(false); 
      } 
     } 
    }); 

    return true; 
} 

और इस ActionBar मार्कअप बचत रेस/मेनू/menu_toolbar_reader.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:yourapp="http://schemas.android.com/apk/res-auto"> 

<item 
    android:id="@+id/action_search" 
    android:title="@android:string/search_go" 
    android:icon="@drawable/abc_ic_search_api_mtrl_alpha" 
    yourapp:showAsAction="always|collapseActionView" 
    yourapp:actionViewClass="android.support.v7.widget.SearchView" /> 

<item 
    android:id="@+id/action_contents" 
    android:title="@string/contents" 
    android:icon="@drawable/abc_ic_menu_moreoverflow_mtrl_alpha" 
    yourapp:showAsAction="always" /> 
</menu> 
संबंधित मुद्दे