Когда вы посмотрите на исходный код SearchView
, вы признаете, что представление ввода по умолчанию надувается до R.id.search_src_text
Это функция надувания:
final int layoutResId = a.getResourceId(
R.styleable.SearchView_layout, R.layout.search_view);
Это макет: R.layout.search_view
Поэтому, чтобы ответить на ваш вопрос, нет способа настроить EditText
и найти его с помощьюфункция: findViewById(android.support.v7.appcompat.R.id.search_src_text));
, поскольку система не может сопоставить экземпляр EditText с идентификатором, который уже привязан к другому представлению .
Для того, чтобы настроить SearchAutoComplete
из SearchView
,Я предлагаю 4 способа достижения этого:
- Использование Reflection или Transform API для редактирования стандартной реализации SeachView, которая может быть трудоемкой и трудной для выполнения.делать.
- Android предоставляет Диалог поиска , чтобы помочь вам реализовать многие функции, такие как голосовой поиск или предложение
- Настроить
SearchView
напрямую, вместо CustomEditText
- Я думаю, что
SearchView$SearchAutoComplete
из SearchView
имеет хорошую реализацию.Он предоставляет множество обратных вызовов событий, чтобы охватить варианты использования.Как уже упоминалось в вашем вопросе, изменение фона или что-то еще не имеет большого значения.Просто возьмите вид и отредактируйте его.