【问题标题】:Handle Android action bar search view处理 Android 操作栏搜索视图
【发布时间】:2015-03-28 08:37:12
【问题描述】:

我需要创建操作栏搜索视图,但我无法处理搜索项。

这是我的菜单 xml 项:

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

<item android:id="@+id/action_search"
      android:title="Search"
      android:icon="@android:drawable/ic_menu_search"
      android:showAsAction="ifRoom"
      android:actionViewClass="android.widget.SearchView" />

我重写了 onOptionsItemSelected 方法来处理项目:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {

        case R.id.action_search:
            System.out.println("press search");

            return true;

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

这是我的 AndroidManifest:

 <meta-data
            android:name="android.app.default_searchable"
            android:value=".app.Search" />

    <activity android:name="com.example.tutorial_search_actionBar.MyActivity"
              android:label="@string/app_name">

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

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

        </intent-filter>
    </activity>

但是当我按下操作栏中的搜索项 1.我的键盘没有搜索键 2.不打印“按搜索”

我该怎么办

【问题讨论】:

    标签: android android-actionbar searchview


    【解决方案1】:

    试试这个

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourAppName="http://schemas.android.com/apk/res-auto" >
    
      <item android:id="@+id/action_search"
          android:title="@string/action_search"
          android:icon="@drawable/ic_action_search"
          yourAppName:showAsAction="ifRoom|collapseActionView"
          yourAppName:actionViewClass="android.support.v7.widget.SearchView" />
    </menu>
    
    
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_xml, menu);
        MenuItem menuItem = menu.findItem(R.id.action_search);
        searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
        searchView.setOnQueryTextListener(this);
    
        final int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            menuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    return true;
                }
    
                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    // Do something when collapsed
                    getLoaderManager().initLoader(1, null, YourClass.this);
                    return true; // Return true to collapse action view
                }
            });
        } else {
            MenuItemCompat.setOnActionExpandListener(menuItem, new MenuItemCompat.OnActionExpandListener() {
                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    return true;
                }
    
                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    getLoaderManager().initLoader(1, null, YourClass.this);
                    return true;
                }
            });
        }
        searchView.setIconifiedByDefault(true);       
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 2023-03-06
      • 2014-04-03
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多