【问题标题】:How to add search icon in action bar?如何在操作栏中添加搜索图标?
【发布时间】:2015-07-10 11:38:42
【问题描述】:

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

<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>

主活动

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

【问题讨论】:

标签: android search android-actionbar navigation-drawer


【解决方案1】:

我认为是因为:

android:showAsAction="never"

而不是那个用途:

android:showAsAction="ifRoom"

【讨论】:

  • 是否可以在我在操作栏中设置的图标上设置 clik listner??
  • 我不确定是否要添加监听器,因为我还是初学者,但我认为您正在寻找类似 @​​987654321@
【解决方案2】:

ShowAsAction 必须是 always 或 ifRoom。

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

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

【讨论】:

    【解决方案3】:

        @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>

    【讨论】: