【问题标题】:Android support v7 ActionBar SearchView not fully expandingAndroid 支持 v7 ActionBar SearchView 未完全扩展
【发布时间】:2015-08-19 17:38:17
【问题描述】:

我想为我的应用程序中的特定活动显示一个完全展开的 SearchView,但是,对于这些活动,SearchView 只跨越一半的 ActionBar。

我目前正在使用 v7 支持库。

这是我在 menu_home.xml 中的 SearchView 的代码:

<menu...
<item
        android:id="@+id/action_search"
        android:title="search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" /
</menu>

这是我的活动代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_home, menu);
    MenuItem item = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    if (showSearch) {
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        searchView.setIconifiedByDefault(false);
    } else {
        item.setVisible(false);
        getSupportActionBar().setDisplayShowTitleEnabled(true);
    }
    return true;
}

下面是 SearchView 的样子:

我尝试将 SearchView LayoutParams.width 设置为 LayoutParams.MATCH_PARENT,但 SearchView.getLayoutParams() 一直返回 null。我试过 ViewGroup.LayoutParams、LinearLayout.LayoutParams、ActionBar.LayoutParams 和 v7.ActionBar.LayoutParams。

如果有任何帮助,此活动仅在纵向模式下进行。

【问题讨论】:

    标签: android searchview android-actionbaractivity


    【解决方案1】:

    MenuItemCompatSearchView 有一个名为maxWidth 的属性。

    final MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setMaxWidth(xxx);
    

    当然使用屏幕宽度而不是xxx

    【讨论】:

    • 您可以安全地使用Integer.MAX_VALUE。然后SearchView 将占用任何可用空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多