Поместите виджет просмотра поиска в правый угол панели инструментов.

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

Любые идеи?

   <android.support.v7.widget.Toolbar
        android:id="@+id/mainToolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.SearchView
                android:layout_width="47dp"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                app:barrierDirection="left"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">

            </android.support.v7.widget.SearchView>
        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.Toolbar>

person Nick    schedule 16.08.2018    source источник
comment
Вы пробовали с меню stackoverflow.com/a/46087764/7666442   -  person AskNilesh    schedule 16.08.2018
comment
Удалите <ConstraintLayout> и атрибуты для него в <SearchView> и добавьте layout_gravity="right|end" в <SearchView>.   -  person Mike M.    schedule 17.08.2018
comment
О, и измените его layout_width на wrap_content. Он сам отрегулирует свою ширину. Это могло быть корнем проблемы все время, но ConstraintLayout просто не нужен.   -  person Mike M.    schedule 18.08.2018


Ответы (1)


Самый простой способ показать значок поиска + расширить его до текста редактирования поиска — использовать пункт меню:

<item android:id="@+id/search"
    android:title="@string/search_title"
    android:icon="@drawable/ic_search_white_24dp"
    app:showAsAction="collapseActionView|ifRoom"
    app:actionViewClass="android.support.v7.widget.SearchView" />

А потом в onCreateOptionsMenu выполняй свою логику

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.transcation_filter, menu);
        // Associate searchable configuration with the SearchView
        SearchManager searchManager =
                (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.search).getActionView();
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getActivity().getComponentName()));

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                mViewModel.filter(newText);
                return false;
            }
        });
        super.onCreateOptionsMenu(menu, inflater);
    }

Свернутый поиск будет выглядеть так

введите здесь описание изображения

И расширил

введите здесь описание изображения

person dilix    schedule 16.08.2018
comment
Этот метод вставляет стрелку влево при расширении. И я не хочу этого - person Nick; 16.08.2018
comment
@Nick немного изменил образец, поиск в меню не означает, что вам нужна кнопка «Назад». - person dilix; 16.08.2018
comment
Опять же, когда вы нажимаете кнопку поиска, виджет расширяется, и слева от виджета появляется стрелка, чтобы свернуть представление поиска до его исходной формы. Я НЕ хочу стрелку слева. Этот метод ставит стрелку по умолчанию - person Nick; 16.08.2018