マテリアルデザインガイドラインに似たSearchViewを作成する 質問する

マテリアルデザインガイドラインに似たSearchViewを作成する 質問する

私は現在、自分のアプリをマテリアルデザインに変換する方法を学んでいるところですが、ちょっと行き詰まっています。ツールバーを追加し、ナビゲーションドロワーにすべてのコンテンツをオーバーレイさせました。

今は、材料ガイドライン:ここに画像の説明を入力してください

これは私が今持っているもので、これを上記のようなものにする方法がわかりません:
私の検索

これは私のメニュー XML です:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

これはうまくいきました。SearchView に展開するメニュー項目が表示され、リストをうまくフィルタリングできます。ただし、1 枚目の画像とはまったく似ていません。ホーム アイコンを戻る矢印に変更できるようにon を

使用しようとしましたが、うまくいかないようです。リスナーでは何も実行されません。うまくいったとしても、1 枚目の画像にはあまり近づきません。新しい appcompat ツールバーで、マテリアル ガイドラインのような SearchView を作成するにはどうすればよいでしょうか。MenuItemCompat.setOnActionExpandListener()R.id.action_search

ベストアンサー1

android.support.v7ライブラリを使用している場合、これを行うのは実際には非常に簡単です。

ステップ1

メニュー項目を宣言する

<item android:id="@+id/action_search"
    android:title="Search"
    android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView" />

ステップ2

SearchView を拡張AppCompatActivityしてセットアップします。onCreateOptionsMenu

import android.support.v7.widget.SearchView;

...

public class YourActivity extends AppCompatActivity {

    ...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_home, menu);
        // Retrieve the SearchView and plug it into SearchManager
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
        SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        return true;
    }

    ... 

}

結果

ここに画像の説明を入力してください

ここに画像の説明を入力してください

おすすめ記事