我的菜单中包含4项与Android菜单项默认宽度不同的项目。这里是import
中SearchView
的代码
res/menu
我的<item
android:id="@+id/menu_toolbar_top_searchBtn"
android:orderInCategory="3"
android:title="@string/search"
android:icon="@drawable/menu_search"
app:actionLayout="@layout/menu_layout_search"
app:showAsAction="always"/>
:
menu_layout_search
当宽度设置为menuitem_width时,与其他菜单相同&#39;宽度,按下时,它会保持在该宽度上。
我尝试过使用:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/menuitem_width"
android:layout_height="wrap_content"
android:background="?attr/actionBarItemBackground"
android:clickable="true"
app:searchIcon="@drawable/menu_search"/>
要在 final Point p = new Point();
getWindowManager().getDefaultDisplay().getSize(p);
final LayoutParams matchParentParams = new LayoutParams(p.x, LayoutParams.MATCH_PARENT);
final LayoutParams wrapContentParams = new LayoutParams(p.x, LayoutParams.WRAP_CONTENT);
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toolbarImage.setVisibility(View.GONE);
toolbarTitle.setVisibility(View.GONE);
notificationMenu.setVisible(false);
drawerMenu.setVisible(false);
searchView.setLayoutParams(matchParentParams);
searchView.requestFocus();
}
});
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
toolbarImage.setVisibility(View.VISIBLE);
toolbarTitle.setVisibility(View.VISIBLE);
notificationMenu.setVisible(true);
drawerMenu.setVisible(true);
searchView.setLayoutParams(wrapContentParams);
return false;
}
});
和MATCH_PARENT
之间来回设置其参数,但当它返回到图标化状态时,它会将所有菜单移到左侧(它们位于右侧),从而破坏整个菜单布局)。
我在这里做错了什么?实际上是否有更简单的方法来设置WRAP_CONTENT
和iconified
not iconified
版本的宽度?