Android - Сделать панель поиска полностью доступной
Я использую элемент поиска в своем фрагменте для реализации функции поиска.
<SearchView
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="7dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginBottom="7dp"
android:background="@color/white" />
![enter image description here]()
Проблема заключается только в том, что значок поиска доступен только для другой области в строке поиска, а не щелчком мыши, когда я нажимаю значок, который только можно найти.
![enter image description here]()
Можете ли вы помочь мне сделать клики доступной для всего участка поиска.
![enter image description here]()
Ответы
Ответ 1
Что такое clickable? вызвать действие поиска или просто сделать область редактирования сфокусированной? Если это первый, вы можете просто сделать значок clickable = false. и сделать весь макет кликабельным и реализовать прослушиватель событий.
<SearchView
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:click="onClick"
android:layout_marginTop="7dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginBottom="7dp"
android:background="@color/white" />
Метод onClick должен быть
public void onClick(View v) {
InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
im.showSoftInput(editText, 0);
}
Ответ 2
Это можно просто сделать, установив значение Iconified в false в OnClick SearchView.
searchBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchBar.setIconified(false);
}
});
Ссылка: Ответ Эрика Луи
Надеюсь, это поможет.
Ответ 3
search_bar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
search_bar.onActionViewExpanded();
}
});
Ответ 4
Трюк заключается не столько в том, чтобы сделать всю область кликабельной, сколько ее расширять, а затем скрывать клавиатуру.
Во-первых, ваш макет в XML в порядке, оставьте его как есть, в вашей Java, вы хотите иметь следующее:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
//Define your Searchview
SearchView searchView = (SearchView) findViewById(R.id.search_bar);
//Turn iconified to false:
searchView.setIconified(false);
//The above line will expand it to fit the area as well as throw up the keyboard
//To remove the keyboard, but make sure you keep the expanded version:
searchView.clearFocus();
}
Что это значит, он расширяет клавиатуру на всю длину области, она фокусируется на ней, что позволяет целой области быть кликабельным, а затем удаляет клавиатуру так, чтобы она выглядела как пользователь, щелкнуть это поле и вызвать клавиатуру.
Выполнять то, что вы ищете.
-Sil
Ответ 5
добавьте это в свой xml android:iconifiedByDefault="false"
, он будет поддерживать откройте свой поиск.
и очистить его, добавьте clearfocus
к вашему объекту searchview.
Ответ 6
searchView.setIconified(false);
Ответ 7
Напишите строки кода, приведенные ниже, в своем файле Java:
SearchView searchView = (SearchView) findViewById(R.id.searchView);
searchView.setQueryHint("Enter your address");
searchView.setIconified(false);
searchView.clearFocus();
После этого не забудьте написать android:focusable="true"
в своем XML файле внутри тега SearchView
.
Например:
<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true" />
Ответ 8
Используйте это
searchView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
searchView.onActionViewExpanded();
OR
searchView.setIconified(false);
}
});
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View view, boolean b)
{
if(!b)
{
if(searchView.getQuery().toString().length() < 1)
{
searchView.setIconified(true); //close the search editor and make search icon again
OR
searchView.onActionViewCollapsed();
}
searchView.clearFocus();
}
}
});
Ответ 9
Для последних версий Android -
Попробуйте:
app:iconifiedByDefault="false"
Пример -
<android.support.v7.widget.SearchView
android:id="@+id/source_location_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_marginRight="20dp"
app:iconifiedByDefault="false"
app:queryHint="Your hint text" />