小智 104
您还可以调用expandActionView()方法来强制它:
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
super.onCreateOptionsMenu( menu );
MenuItem searchMenuItem = menu.findItem( R.id.mi_search ); // get my MenuItem with placeholder submenu
searchMenuItem.expandActionView(); // Expand the search menu item in order to show by default the query
return true;
}
Run Code Online (Sandbox Code Playgroud)
操作栏布局中的搜索项:
<item
android:id="@+id/mi_search"
android:icon="@drawable/abs__ic_search_api_holo_light"
android:title="@string/search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="com.actionbarsherlock.widget.SearchView"
/>
Run Code Online (Sandbox Code Playgroud)
Ale*_*ran 86
要使SearchView在默认情况下展开,请setIconifiedByDefault(false)在初始化时调用它(例如,在onCreateOptionsMenu(..)或中onPrepareOptionsMenu(..)).我发现在大多数情况下,它会自动聚焦,但如果不是简单地调用requestFocus()它.
Pas*_*ius 50
如果你想拥有它iconifiedByDefault,这对我有用.setFocusable并且setIconified是必需的.
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setIconifiedByDefault(true);
searchView.setFocusable(true);
searchView.setIconified(false);
searchView.requestFocusFromTouch();
Run Code Online (Sandbox Code Playgroud)
更新:如果您使用android.support.v7.widget.SearchView我们的行为非常不同.clearFocus如果您不想一直弹出键盘,则需要它.出于某种原因,在使用appcompat时,菜单会一直重新创建.
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setIconified(false);
searchView.clearFocus();
Run Code Online (Sandbox Code Playgroud)
riw*_*nyk 25
如果你在布局中使用它,你可以打电话
mSearchView.onActionViewExpanded()
这对我有用:
在根布局中:
xmlns:app="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)
SearchView定义如下:
<android.support.v7.widget.SearchView
android:id="@+id/search_contacts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="15dp"
android:background="@drawable/search_view"
app:iconifiedByDefault="false"
app:queryHint="Search name or email"
>
<requestFocus />
</android.support.v7.widget.SearchView>
Run Code Online (Sandbox Code Playgroud)
不同之处在于app标签.
app:iconifiedByDefault="false"
app:queryHint="Search name or email"
Run Code Online (Sandbox Code Playgroud)
如果您在活动内部使用,则需要使用
view.onActionViewExpanded();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用内部菜单选项,则需要使用
MenuItem.expandActionView();
Run Code Online (Sandbox Code Playgroud)
注意:仅适用于SearchView
这两种情况都为我工作。