ユーザーが検索アイコンをタップすると、OptionsMenu で展開される作業中の SearchView があります。ただし、他の OptionsMenu アイコンの間で使用可能なスペース内でのみ展開されます。広い画面では問題ありませんが、狭いスペースでは、検索ボックスに 5 ~ 10 文字しか表示できません。Android の連絡先アプリのように、他のアイコンに重ねて表示したい。現在、私は targetSdkVersion = 17 でビルドしています。単純なものが欠けていることを願っています:)
(後で追加された注記: これまでのところ実行可能な唯一の解決策は、検索アイコンを展開したいときにすべてのメニュー アイコンを非表示にすることです。これは概念的には単純です。しかし、非表示のアイコンを復元するときに移動する必要があるため、面倒です。一連のロジックを介して、復元するものを見つけたり、状態変数を維持したりするなど)
OptionsMenu の項目 xml は次のとおりです。
<item
android:id="@+id/menu_search_shallow"
android:title="Search Current Folder"
android:icon="@drawable/ic_btn_search"
android:showAsAction="always|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
メインアクティビティコードにもあります:
@Override
public boolean onCreateOptionsMenu (Menu menu)
{
getMenuInflater().inflate(R.menu.nav_menu, menu);
this.optionsMenu = menu;
MenuItem searchItem = menu.findItem (R.id.menu_search_shallow);
searchItem.setOnActionExpandListener (this);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_shallow_hint));
searchItem = menu.findItem (R.id.menu_search_deep);
searchItem.setOnActionExpandListener (this);
searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_deep_hint));
}
と
@Override
public boolean onMenuItemActionExpand(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener (this);
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setQuery ("", false);
return true;
}