如何在操作栏中添加搜索图标?

时间:2015-07-10 11:38:42

标签: android search android-actionbar navigation-drawer

我正在使用导航抽屉,我在所有片段中都有操作栏,我正在尝试在操作栏中添加搜索图标但是它没有出现,应用程序没有崩溃但是在我的操作栏中看不到图标,以下是我的代码可以任何一个帮助

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:icon="@drawable/searchs"
        android:title="@string/action_settings"/>



</menu>

MainActivity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

3 个答案:

答案 0 :(得分:1)

我认为这是因为:

android:showAsAction="never"

而不是使用:

android:showAsAction="ifRoom"

答案 1 :(得分:1)

ShowAsAction必须始终或ifRoom。

always makes sure it is always present. 
ifRoom pushes the menuitem into overflow menu if space is not available.

如果您打算将搜索功能附加到您的活动,则应考虑使用SearchView widget而不是使用和图标并处理点击它。

答案 2 :(得分:1)

&#13;
&#13;
    @Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.menu_contact, menu);
    		MainActivityAfterLogin.menu = menu;

    		MenuItem searchItem = menu.findItem(R.id.menu_search);
    		SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    		SearchView searchView = (SearchView) MenuItemCompat
    				.getActionView(searchItem);
    		searchView.setSearchableInfo(searchManager
    				.getSearchableInfo(getComponentName()));
    		searchView.setOnQueryTextListener(new OnQueryTextListener() {

    			@Override
    			public boolean onQueryTextSubmit(String text) {

    				return false;
    			}

    			@Override
    			public boolean onQueryTextChange(String text) {

    				return false;
    			}
    		});

    		return true;
    	}



    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="${relativePackage}.${activityClass}" >

      
        <item
            android:id="@+id/menu_search"
            android:title="@string/action_search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always"/>

    </menu>

add this in manifest

 <activity
            android:name="**mainactivity**"
            android:label="@string/title_activity_invited_person_list" >
            <meta-data
                android:name="android.app.default_searchable"
                android:value="**result activity**" />
        </activity>
        <activity
            android:name="com.w3nuts.rsvp.main.SearchResultActivity"
            android:label="@string/title_activity_search_result" >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>
&#13;
&#13;
&#13;