非常简单的问题,不需要太多代码:
我正在使用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的标题 消失 (即使有足够的空间可以显示它!)。所以我的问题是我得到了这个空白的空间,可以显示活动的标题。
展开前:
扩展后:
(两张截图均来自横向模式的手机。经过Android 4.0.4和4.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()将其参数解释为像素。