SearchView удалить синюю линию фокуса и показать курсор в определенной позиции

Я пытался удалить синюю линию фокуса в SearchView. Я перевожу ее в AutoCompleteTextView, чтобы использовать настраиваемые значки для своего searchView.

    int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    searchtextView = (AutoCompleteTextView) searchView.findViewById(id); 

я пытался использовать

searchtextView.setBackGroundColor(0) 

и вручную установить фон # 0000000 в моем xml, но я все еще вижу синюю линию внизу.

Вторая проблема, с которой я сталкиваюсь, заключается в том, что курсор изначально не отображается в тексте. Я хочу отображать курсор, когда в поиске ничего не вводится. Я попытался сделать это программно, используя

if (searchtextView.getText().toString().length() >= 0) {
   searchtextView.setSelection(searchtextView.getText().toString().length());
 }

который должен отображать курсор, даже если внутри searchView нет текста. Я думаю, что это как-то связано с фокусом, потому что, когда я набираю 2-3 символа, курсор появляется автоматически.


person luckysing_noobster    schedule 20.11.2013    source источник
comment
android:background = @android:color/transparent. Это удалит синюю линию   -  person Rahul Gupta    schedule 20.11.2013
comment
Я пытался это сделать, но синяя линия не исчезла. Свойство background просто устанавливает фон Searchview прозрачным и не удаляет линию фокуса.   -  person luckysing_noobster    schedule 21.11.2013


Ответы (3)


Я смог решить эту проблему, установив фон панели поиска по умолчанию следующим образом:

int searchPlateId = searchView.getContext().getResources()
            .getIdentifier("android:id/search_plate", null, null);
    View searchPlateView = searchView.findViewById(searchPlateId);
    if (searchPlateView != null) {
        searchPlateView.setBackgroundColor(Color.BLACK);
    }

Эта статья помогла. ссылка на статью

person luckysing_noobster    schedule 12.12.2013
comment
ты сэкономил мне часы, приятель - person Mightian; 05.10.2015

Вы можете использовать

android:queryBackground="@android:color/transparent"
person kshitij jain    schedule 29.07.2016
comment
Android API уровня 21 минимум - person Xero; 14.02.2017

Я смог заставить его работать, сняв фокус с текста редактирования поиска во время функции создания меню. Код ниже:

@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
                    }
                }
            }
        }
}
person falc0nit3    schedule 29.12.2014