私は現在、自分のアプリをマテリアルデザインに変換する方法を学んでいるところですが、ちょっと行き詰まっています。ツールバーを追加し、ナビゲーションドロワーにすべてのコンテンツをオーバーレイさせました。
今は、材料ガイドライン:
これは私が今持っているもので、これを上記のようなものにする方法がわかりません:
これは私のメニュー 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;
}
...
}