首先,请帮我改一下标题,以更好地适应问题,以便其他人找到。
这个问题已被问到here,但得到的答案并不令我满意,我将解释原因。
注意:我将 v7-AppCompat 支持库 ~v22
与 Toolbar
和 setSupportActionBar(toolbar)
一起使用>
问题
如何限制扩展的 MenuItem
的 ActionView
(在我的例子中为 SearchView)以填充父项,但不将其他 MenuItem
推到范围之外。
答案显而易见(不够好)
在代码中,我们可以在项目上使用
MenuItemCompat.expandActionView(item);
,但是:
A。展开时,“后退”按钮显示在DrawerToggle
顶部。 This并没有真正解决它。
b.按下后,SearchView
将再次折叠。如 known 一样,在
SearchView
上设置iconifiedByDefault(false)
以及app:showAsAction="ifRoom|collapseActionView"
使其扩展(并带有一些 side effects ),但是:请参阅上面的“1”。
我当前的解决方案
我在第二个解决方案中使用自定义宽度因子 (~0.7),强制 SearchView
的宽度与(Toolbar
的宽度)*(因子)一样。
这有点好,但有时会失败(我猜菜单没有完全准备好),并且有可能,通常扩展 SearchView
(第一个解决方案)会导致所需的宽度。
我尝试过的另一件事:
将 SearchView
设置为 Toolbar
的自定义布局,而不是 MenuItem
。但它开始崩溃,我似乎无法扩展它。另外,我想以“正确”的方式执行此操作,而不是使用自定义布局。
如果有任何帮助,我很乐意添加更多代码。
谢谢!
最佳答案
看来,操作栏限制了您的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。
希望这对您有帮助。
关于Android Toolbar SearchView根据其他项目约束宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967077/