SearchView неправильное выравнивание

У меня проблема с выравниванием SearchView при его расширении. По какой-то причине в свернутом состоянии он выравнивается по правому краю, а в раскрытом — по левому. Я сделал все по примерам ActionBarSherlock.

Вот два скриншота проблемы:

http://img59.imageshack.us/img59/8976/.png

http://img577.imageshack.us/img577/9890/.png

Мне еще предстоит решить, хочу ли я использовать вкладки ActionBar. Я не хочу, чтобы searchView скрывал их при расширении. Но это к другому вопросу. Моей главной проблемой здесь является выравнивание SearchView при расширении. Я хочу, чтобы он сохранял правильное выравнивание, несмотря ни на что.

Вот мой onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getSupportMenuInflater().inflate(R.menu.menu_main, menu);
    searchMenuItem = menu.findItem(R.id.action_search);
    refreshMenuItem = menu.findItem(R.id.action_refresh);

    refreshMenuItem.setActionView(R.layout.refresh_progressbar);

    searchMenuItem.setOnActionExpandListener(new OnActionExpandListener() {

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            flightsListAdapter.getFilter().filter("");
            return true;
        }
    }); 

    searchView = (SearchView)searchMenuItem.getActionView();
    searchView.setQueryHint(getResources().getString(R.string.search_hint));
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            searchView.clearFocus();
            return true;
        }

        @Override
        public boolean onQueryTextChange(String query) {
            flightsListAdapter.getFilter().filter(query);
            return true;
        }
    });
    searchView.clearFocus();

    return true;
}

А вот мой menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_search"
    android:title="@string/search"
    android:icon="@drawable/ic_search"
    android:showAsAction="always|collapseActionView"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView" />

<item
    android:title="@string/date"
    android:icon="@drawable/ic_compose"
    android:showAsAction="always" >
    <menu>
        <item
            android:id="@+id/menuYesterday"
            android:title="Yesterday"/>
        <item
            android:id="@+id/menuToday"
            android:title="Today"/>
        <item
            android:id="@+id/menuTomorrow"
            android:title="Tomorrow"/>
    </menu>
</item>

<item
    android:id="@+id/action_refresh"
    android:icon="@drawable/ic_refresh"
    android:showAsAction="always"
    android:title="@string/action_refresh" />
</menu>

Спасибо за чтение :)


person Gonzalo Brusco    schedule 15.08.2013    source источник


Ответы (1)


В порядке. Просто для всеобщего сведения, я отвечаю на свой вопрос.

Хитрость заключалась в том, чтобы удалить «collapseActionView» в SerchView. Как только я удалил это, SearchView остается на месте (справа) при расширении.

person Gonzalo Brusco    schedule 16.08.2013
comment
Хм, я попробовал это, и хотя SearchView действительно остается справа, это также приводит к потере моей пользовательской иконки (в свернутом состоянии). - person Jonik; 21.11.2013
comment
Хорошо, теперь я нашел способ выровнять расширенный SearchView (справа), который работает без потери моего пользовательского значка: stackoverflow.com/a /20146626/56285 - person Jonik; 22.11.2013