Android工具栏SearchView根据其他项限制宽度

时间:2015-08-12 13:45:27

标签: android android-actionbar searchview android-toolbar

首先,请帮助我改写标题以更好地适应问题,让其他人找到 这个问题已经被问到here但是我的回答并不令我满意,我将解释原因。

注意:我将v7-AppCompat Support Library ~v22ToolbarsetSupportActionBar(toolbar)

一起使用

问题
如何约束展开ActionView的{​​{1}}(在我的情况下是SearchView)来填充父级,但不要将其他MenuItem推到范围之外。

明显(不够好)答案

  1. 在代码中,我们可以在项目上使用MenuItem,但是:
    一个。扩展后,"返回"按钮显示在MenuItemCompat.expandActionView(item);的顶部。 This并没有真正解决它 湾在按下后,DrawerToggle将再次崩溃。

  2. 作为known,在SearchView上设置iconifiedByDefault(false)以及SearchView会使其展开(以及某些side effects),但是:见' 1'以上。

  3. 我当前的解决方案
    我在第二个解决方案中使用自定义宽度系数(~0.7),强制app:showAsAction="ifRoom|collapseActionView"的宽度为(SearchView宽度)*(系数)。
    这有点好,但有时会失败(我猜菜单没有完全准备好),并且有可能,通常扩展Toolbar(第一个解决方案)会导致所需的宽度。

    我尝试过另一件事:
    SearchView设置为SearchView的自定义布局,而不是Toolbar。但它开始崩溃,我似乎无法扩大它。另外,我想这样做"对"方式而不是使用自定义布局。

    如果有任何帮助,我会很乐意再添加一些代码 THX!

1 个答案:

答案 0 :(得分:0)

似乎操作栏限制了SearchView的最大值。以下代码适用于我:

 final MenuItem item = menu.findItem(R.id.search);
 item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_ALWAYS);
 mSearchView = (SearchView) MenuItemCompat.getActionView(item);
 mSearchView.setMaxWidth(Integer.MAX_VALUE);

核心技巧是改变SearchView的maxWith。

希望这会对你有所帮助。