2015-02-19 3 views
1

У меня большие проблемы с открытием и закрытием клавиатуры с помощью searchview на панели инструментов в качестве панели действий. Когда я нажимаю кнопку поиска, он расходуется как действие, и появляется текст редактирования, но он не имеет фокуса, и они не открывают клавиатуру. Мне нужно вручную щелкнуть по edittext, чтобы открыть клавиатуру. То же самое для закрытия клавиатуры. Когда я нажимаю кнопку быстрого поиска, они не закрываются.Автоматически открывать/закрывать клавиатуру с помощью SearchView на панели инструментов

Я уверен, что это уже работало без использования панели инструментов .... но я не могу исправить ее с помощью панели инструментов. У кого-нибудь есть идея?

Это мое меню:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context="com.example.toolbar.MainActivity" > 


<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="ifRoom|collapseActionView" 


    app:actionViewClass="android.widget.SearchView" 
    android:title="@string/action_search"/> 

<item 
    android:id="@+id/action_contact" 
    android:icon="@drawable/ic_action_settings" 
    app:showAsAction="ifRoom" 

    android:title="@string/action_settings"/> 

И это мой onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 

    // Get the SearchView and set the searchable configuration 
    SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); 
    searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    // Do not iconify the widget;expand it by default 
    searchView.setIconifiedByDefault(false); 

    setSearchIcons(); 
    return super.onCreateOptionsMenu(menu); 
} 

Спасибо за любые советы. Приветствия!

EDIT1:

Ну, очевидно, после 10 часов борьбы я задаю этот вопрос и 30мин позже я нашел решение.

Это приложение: showAsAction = "ifRoom | collapseActionView" collapseActionView. Удаление этого делало трюк. Но теперь у меня другая проблема. Когда окно поиска расширяется, кнопка настроек выглядит очень плохо. Кнопка настройки наполовину видима/вырезана наполовину.

На API 21 Nexus 4 Android 5 в режиме поиска вырезается кнопка настроек. На THL 5000 с Android 4.4.2 поиск выглядит нормально, но значки не белые, как на Nexus, но серые. Любая идея?

ответ

1

Если SearchView не всегда в раскрытом состоянии, то вы можете попробовать ниже код:

mSearchView.setIconifiedByDefault(true); 
mMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { 
    @Override 
    public boolean onMenuItemActionExpand(MenuItem item) { 
     // Add code here 
     return false; 
    } 

    @Override 
    public boolean onMenuItemActionCollapse(MenuItem item) { 
     // Add code here 
     return false; 
    } 
}); 

Чтобы скрыть клавиатуру после нажатия ввода/сделано на клавиатуре:

@Override public boolean onQueryTextSubmit(String query) { 
    mSearchView.clearFocus(); 
    return true; 
} 
+0

Спасибо за ваш ответ! Ну, мой поискView не всегда расширяется, только после нажатия на значок поиска. Я просто попытался установить searchView.setIconifiedByDefault (true), и теперь у меня очень странное поведение. Если вы получили большой значок поиска и нажав на этот значок, появится значок меньшего поиска, и после нажатия маленького значка поиска все будет работать так, как ожидалось. Таким образом, кажется, что моя функция поиска находится за другой кнопкой. – Patric

+0

Хорошо. Я все равно отредактировал свой ответ. Надеюсь, это поможет кому-то. – Vamsi

+0

Спасибо! Я определенно могу использовать ваш метод. Возможно, у вас есть идея, как решить новую проблему. Еще раз спасибо! – Patric

Смежные вопросы