2016-02-06 49 views
0

我試圖將搜索視圖添加到Android中的應用欄。接下來是本教程:http://developer.android.com/training/search/setup.html#add-sv在Android中將搜索視圖添加到應用欄

但是當我運行該程序時,它只有一個圖標可以被點擊,搜索視圖沒有出現,但教程說它應該出現。誰能幫我?

menu_main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/action_search" 
    android:title="@string/abc_search_hint" 
    android:icon="@drawable/ic_search_white_48dp" 
    app:showAsAction="ifRoom|collapseActionView" 
    android:actionViewClass="android.widget.SearchView" /> 
    </menu> 



    MainActivity 

    public class MainActivity extends ActionBarActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 
    if (id == R.id.action_search) { 
     return true; 
    } 
    return true; 
} 

這裏是截圖 enter image description here

+0

你能後的截圖? –

+0

是的,請參閱 –

+0

我認爲您已經完成了正確設置ActionBar的所有步驟? http://developer.android.com/training/appbar/setting-up.html –

回答

1

XML:

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
      android:id="@+id/search" 
      android:title="@string/search" 
      android:icon="@drawable/ic_search_white" 
      android:textColor="@color/white" 
      app:showAsAction="ifRoom|collapseActionView" 
      app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

活動

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.search_menu, menu); 
     MenuItem searchItem = menu.findItem(R.id.search); 
     final SearchManager searchManager = 
       (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     SearchView searchView = 
       (SearchView) MenuItemCompat.getActionView(searchItem); 

     searchView.setSearchableInfo(
       searchManager.getSearchableInfo(getComponentName())); 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String queryText) { 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       String newFilter = !TextUtils.isEmpty(newText) ? newText : null; 
       if (mSearchTerm == null && newFilter == null) { 
        return true; 
       } 
       if (mSearchTerm != null && mSearchTerm.equals(newFilter)) { 
        return true; 
       } 
       mSearchTerm = newFilter; 
       mSearchQueryChanged = true; 
       searchText(newText); //handle this 
       return true; 
      } 
     }); 

     MenuItemCompat.OnActionExpandListener expandListener = new MenuItemCompat.OnActionExpandListener() { 
      @Override 
      public boolean onMenuItemActionExpand(MenuItem menuItem) { 
       return true; 
      } 

      @Override 
      public boolean onMenuItemActionCollapse(MenuItem menuItem) { 

       return true; 
      } 
     }; 
     MenuItemCompat.setOnActionExpandListener(searchItem, expandListener); 
     return super.onCreateOptionsMenu(menu); 
    }