我有一个使用AppCompat主题和自定义工具栏的应用程序,它具有应用程序名称和searchView。当searchView在手机大小的屏幕上打开时,没有足够的空间容纳带有应用程序名称和打开的searchView的textView,因此它会垂直展开工具栏并且看起来很糟糕。
要解决此问题,我会在searchView打开时使用应用名称删除textView:
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
title.setVisibility(View.GONE);
}
});
当searchView关闭时,它回来了:
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
title.setVisibility(View.VISIBLE);
return false;
}
});
然而,在更大的屏幕设备上,如平板电脑,这不是必需的,只是消失的名字看起来很奇怪。
有没有办法检查是否有空间让searchView打开,并且仅在必要时删除应用名称?我知道我可以通过屏幕大小,dpi或类似的东西来做到这一点,但我想知道是否有更好的方法来检测这种情况。
答案 0 :(得分:0)
一个解决方案和简单的解决方案是使用configuration qualifiers。您可以在boolean
文件夹中存储values
值,例如hasEnoughWidth
,并将其设置为false
。然后另一个屏幕尺寸的布尔值,你认为它有足够的宽度,只是猜测它的最小宽度400dp
可能是好的。因此,在boolean
文件夹中存储具有相同名称的values-w400dp
变量,并将其设置为true
。然后只需阅读boolean
值并做出决定。这是一种常用的技术,可用于检测平板电脑或手机。