Подтвердить что ты не робот

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

4b9b3361

Ответ 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" />