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