在ActionBar中更改搜索图标。

3
我用以下代码在Action bar中添加了一个搜索框:
activity_main_actions.xml
<!-- Search  -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="ifRoom"
      android:actionViewClass="android.widget.SearchView"/>


<!-- Add -->
<item android:id="@+id/action_add_tip"
      android:icon="@drawable/header_add"
      android:title="@string/action_add_tip"
      android:showAsAction="ifRoom" />

<!-- Count -->
<item android:id="@+id/action_count_tip"
      android:icon="@drawable/header_count"
      android:title="@string/action_count_tip"
      android:showAsAction="ifRoom" />

在MainActivity.java文件中

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main_actions, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));


    return super.onCreateOptionsMenu(menu);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_search:
        // search action
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

searchable.xml

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_search:
        // search action
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

Manifest.xml

  <activity
        android:name="com.emy.healthytips.MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:launchMode="singleTop">
        <meta-data
            android:name="android.app.default_searchable"
            android:value=".MainActivity" />

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />

        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
    </activity>

搜索功能已经正常运行,但是在操作栏中的搜索图标仍然是灰色的,如下截图所示。尽管我已经在以下代码中添加了自己的图标:<item android:id="@+id/action_search" android:icon="@drawable/ic_action_search"
请问我该如何添加自己的图标?
1个回答

2

谢谢你的回答,你链接中的第二个答案对我很有帮助。 - Eman87
但我有另一个问题,如果搜索图标的ID是:searchImgId = getResources().getIdentifier("android:id/search_button", null, null);那么关闭搜索栏的图标的ID是什么? - Eman87
在可搜索的标签中,有一个名为“icon”的标签,您可以使用它来设置自己的图标。 - slhddn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接