ActionBar中的SearchView和Activity Title

时间:2013-11-26 11:26:03

标签: java android android-layout android-actionbar

非常简单的问题,不需要太多代码:

我正在使用Android的默认ActionBar(没有Sherlock),其中有几个MenuItem。其中一个是针对典型搜索场景的可折叠操作视图(android:showAsAction="collapseActionView|always"):用户点击图标→搜索框展开→当用户键入任何内容时,onQueryTextChange会发挥其魔力。

SearchView sv = new SearchView(this);
sv.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT));
// Yada, yada...
sv.setOnQueryTextListener(new OnQueryTextListener() {
    // The methods for onQueryTextSubmit and onQueryTextChange ... they apply filtering on the activity's list adapter and apparently work fine
}
menuItem.setActionView(sv); // menuItem is the item for the search action
searchAnswers.setOnActionExpandListener(new OnActionExpandListener() {
    // The listener's methods for expand/collapse as I need some business logic behind them
}

以上所有工作都很好。

当设备处于纵向模式并且屏幕空间有限时,SearchView几乎占据整个操作栏,隐藏其他MenuItems(具有android:showAsAction="ifRoom")以及Activity的标题,这可以通过我

问题是,如果设备处于横向模式(因此仍然有免费的ActionBar空间),SearchView不会占用整个ActionBar(再次,我很好)但是Activity的标题 消失 (即使有足够的空间可以显示它!)。所以我的问题是我得到了这个空白的空间,可以显示活动的标题。

展开前:  Has the activity title.

扩展后:  So much free space I could rent it.

(两张截图均来自横向模式的手机。经过Android 4.0.4和4.3测试。)

有足够空间时如何保留活动标题的任何提示?

3 个答案:

答案 0 :(得分:1)

不确定您是否找到了此问题的答案。但我在这个帖子上找到了一个可能有帮助的答案 - 它肯定对我有帮助。

ActionBar SearchView not fully expanding in landscape mode

从链接复制的代码:

searchView.setOnSearchClickListener(new OnClickListener() {
    private boolean extended = false;

    @Override
    public void onClick(View v) {
        if (!extended) {
        extended = true;
            LayoutParams lp = v.getLayoutParams();
            lp.width = LayoutParams.MATCH_PARENT;
        }
    }
});

答案 1 :(得分:0)

searchView.setMaxWidth(Integer.MAX_VALUE);

答案 2 :(得分:0)

在CoolMind答案的基础上,它对我来说可以将最大宽度设置为较小的值:

searchView.setMaxWidth(375);

setMaxWidth()将其参数解释为像素。