【问题标题】:Expand SearchView icon in the AppBar? - Android展开 AppBar 中的 SearchView 图标? - 安卓
【发布时间】:2016-03-08 11:17:06
【问题描述】:

我有这个代码:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main_search, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);


    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_logout) {

        Intent activity2 = new Intent(ActivityFrontend.this, LoginPage.class);
        startActivity(activity2);

    }

    if (id == R.id.action_search) {


        Toast.makeText(ActivityFrontend.this, "Toast OK!", Toast.LENGTH_SHORT).show();
    }

    return super.onOptionsItemSelected(item);
}

这是我的菜单 xml 文件:

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

<!--<item-->
    <!--android:id="@+id/action_logout"-->
    <!--android:orderInCategory="100"-->
    <!--android:title="@string/action_logout"-->
    <!--app:showAsAction="never" />-->

<!--<item android:id="@+id/action_search"-->
    <!--android:title="Search..."-->
    <!--android:icon="@drawable/ic_search_black_24dp"-->
    <!--android:showAsAction="always"-->
    <!--android:actionViewClass="android.widget.SearchView" />-->

<item
    android:id="@+id/action_logout"
    android:orderInCategory="100"
    android:title="@string/action_logout"
    app:showAsAction="never" />

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

当用户点击它时,我想在应用栏中展开搜索图标。我遵循的教程对我不起作用。 我能怎么做? 提前致谢。

【问题讨论】:

    标签: android searchview


    【解决方案1】:

    当你触摸图标时,你需要有一个回调。像这样注册一个回调

    searchView.setOnSearchClickListener(new View.OnClickListener()

    {

                @Override
                public void onClick(View v)
               {
               //write your onclick event here
                }
    

    }

    【讨论】:

      【解决方案2】:

      在 xml 文件夹中创建可搜索的配置
      可搜索的.xml

      <?xml version="1.0" encoding="utf-8"?>
      <searchable xmlns:android="http://schemas.android.com/apk/res/android"
      android:label="@string/app_name"
      android:hint="@string/search_hint" />
      

      在清单文件中,声明指向 res/xml/searchable.xml 的元数据元素

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

      在关联可搜索配置文件之前创建的 onCreateOptionsMenu() 中

       @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          getMenuInflater().inflate(R.menu.menu_main, menu);
          SearchManager searchManager =
                  (SearchManager) getSystemService(Context.SEARCH_SERVICE);
          SearchView searchView =
                  (SearchView) menu.findItem(R.id.action_search).getActionView();
          searchView.setSearchableInfo(
                  searchManager.getSearchableInfo(getComponentName()));
          return true;
      }
      

      创建一个可搜索的activity并添加intentfilter

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

      在该活动中处理此意图

      private void handleIntent(Intent intent) {
      
          if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
              String query = intent.getStringExtra(SearchManager.QUERY);
              //use the query to search your data somehow
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-16
        • 1970-01-01
        • 2011-08-27
        • 1970-01-01
        • 2018-07-15
        • 2018-01-12
        • 2014-07-29
        • 2014-09-21
        相关资源
        最近更新 更多