--- 問題を解決 - 編集テキストに回答を追加 ---
ActionBar
Android アプリで Sherlockを使用しています。そこで見せたいのはSearchView
. 今のところ問題なく動作していますが、カスタマイズしようとすると何か間違っていることに気付きます。
私はこのように作成します:
searchView.setQueryHint("Search: ");
searchView.setOnQueryTextListener(this);
searchView.setOnCloseListener(...);
searchMenuItem = menu.add("Search place");
searchMenuItem.setIcon(R.drawable.ic_action_search)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
私は2つのことをしたい:
表示されるテキスト フィールドに表示される「検索」というテキストの色を変更します。テーマの全体的なテキストスタイルで変更したようですが、どうにかして別の色を設定できるといいのですが。
この検索ビューを開くと、アクション バーの左側に表示されます。しかし、私は右側にそれが必要です。アイコン (拡大鏡) は実際にはバーの右側にありますが、それを押すと左側に EditTextfield が開きます。LayoutParams を使用しようとしましたが、LayoutParams を使用してアクション バーに追加しようとすると、重要なものが不足しています。
うまくいけば、誰かが私を助けてくれるかもしれません。
どうもありがとう、トバイアス
- - 編集 - -
さて、これで1つのことが解決されました。ActionBar を XML で追加すると、TextEdit が右側になります。
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
Log.e(TAG, "searchView: " + searchView);
そして私のmenu.xmlで
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:actionViewClass="com.actionbarsherlock.widget.SearchView" />
これで、少なくとも 1 つの謎が解決しました (なぜこれが違いを生んだのか)。しかし、新しく作成された XML は呼び出し時にもう閉じません
searchMenuItem.collapseActionView();
ですから、まだ何か問題があります。
--- 編集 2 ---
お知らせするだけです。テキストの色の解決策を見つけました。これは、SearchView の AutoCompleteTextView を使用して実現できます。
AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(R.color.white));
searchText.setTextColor(getResources().getColor(R.color.white));
したがって、私が抱えている最後の問題は、テキストを送信するときに SearchView が閉じられなくなったことです。したがって collapseActionView() などは機能しません。何か案は?
--- 編集 3 ---
さて、私は解決策を見つけました。これが正しい方法かどうかはわかりませんが、使用する場合
((SearchView) searchMenuItem.getActionView()).setIconified(true);
それはEditText
最初は入力テキストを「削除」して「ヒント」を表示するのに対し、2回目はヒントEditTextを「閉じ」、searchViewを拡大鏡に折りたたむため、2回行う必要があります。不器用なスタイルですが、うまくいきます。:-)