SearchView удаляет синюю линию фокусировки и показывает курсор в определенном положении
Я пытаюсь удалить синюю линию фокуса в SearchView. Я отсылаю ее в AutoCompleteTextView, чтобы я мог использовать настраиваемые значки для моего поиска.
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
searchtextView = (AutoCompleteTextView) searchView.findViewById(id);
Я пробовал использовать
searchtextView.setBackGroundColor(0)
и вручную установите фон на # 0000000 в моем xml, но я все еще вижу синюю линию внизу.
Вторая проблема, с которой я сталкиваюсь, заключается в том, что курсор не отображается в тексте изначально. Я хочу отобразить курсор, когда ничего не вводится в searchview.I пытался сделать это программно, используя
if (searchtextView.getText().toString().length() >= 0) {
searchtextView.setSelection(searchtextView.getText().toString().length());
}
который должен отображать курсор, даже если в поиске не существует текста. Я думаю, что он имеет какое-то отношение к фокусу, потому что, когда я печатаю 2-3 символа, курсор появляется автоматически.
Ответы
Ответ 1
Мне удалось решить эту проблему, установив фон таблицы поиска по умолчанию следующим образом
int searchPlateId = searchView.getContext().getResources()
.getIdentifier("android:id/search_plate", null, null);
View searchPlateView = searchView.findViewById(searchPlateId);
if (searchPlateView != null) {
searchPlateView.setBackgroundColor(Color.BLACK);
}
Эта статья помогла. ссылка статьи
Ответ 2
Вы можете использовать
android:queryBackground="@android:color/transparent"
Ответ 3
Мне удалось заставить его работать, очистив фокус на тексте редактирования поиска во время функции создания меню. Код ниже:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
...
final MenuItem searchItem = menu.findItem(R.id.action_search);
if (searchItem != null) {
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
final SearchView view = (SearchView) searchItem.getActionView();
if(view !=null){
LinearLayout searchPlate = (LinearLayout)mSearchView.findViewById(R.id.search_plate);
if(searchPlate != null){
mSearchEditText = (EditText)searchPlate.findViewById(R.id.search_src_text);
if(mSearchEditText != null){
mSearchEditText.clearFocus(); // This fixes the keyboard from popping up each time
}
}
}
}
}