--- РЕШАЕМ ПРОБЛЕМЫ - ДОБАВЛЯТЬ ОТВЕТЫ В ИЗМЕНЕНИИ ТЕКСТА ---
Я использую ActionBar
Шерлок в своем приложении для Android. Там я хочу показать 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);
Я хочу сделать две вещи:
-
Измените цвет текста "Поиск", который отображается в появившемся текстовом поле. Похоже, я изменил его с общим стилем текста в моей теме, но я надеюсь, что смогу каким-то образом установить отдельный цвет.
-
При открытии этого вида поиска он отображается в левой части панели действий. Но мне нужно это с правой стороны. Значок (лупа) на самом деле находится на правой стороне панели, но нажатие на него открывает поле EditText с левой стороны. Я попытался использовать LayoutParams, но мне не хватает чего-то существенного при попытке добавить его в панель действий с помощью LayoutParams.
Так что, надеюсь, кто-то может мне помочь.
Большое спасибо, Tobias
---- EDIT ----
Хорошо, так что с этим все решено. Добавление 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" />
Итак, по крайней мере одна загадка решена (почему когда-либо это имело значение). Но вновь созданный XML больше не закрывается при вызове
searchMenuItem.collapseActionView();
Так что с ним все еще что-то не так.
--- EDIT 2 ---
Просто чтобы вы знали. Я нашел решение для цвета текста. Этого можно добиться с помощью AutoCompleteTextView SearchView:
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() и т.д. Не работает. Любые идеи?
--- EDIT 3 ---
Хорошо, я нашел решение. Я не знаю, правильно ли это сделать, но при использовании
((SearchView) searchMenuItem.getActionView()).setIconified(true);
он закрывает EditText
Мне нужно сделать это дважды, потому что первый раз это только "удаление" моего входного текста и отображение "подсказки", тогда как второе использование - "закрытие" подсказки EditText и сворачивание searchView в лупу. Неуклюжий стиль, но он работает.: -)