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
                    }
                }
            }
        }
}