我在我的应用中使用了搜索小部件。我想把它带到一切之前,我做了它并在真实设备上进行了测试。它工作正常。但是当我在一个棒棒糖设备上进行测试时,它并没有起作用。然后我才知道bringToFront()
在棒棒糖中运作不佳。所以我可以使用setElevation()
或其他东西(也许是setZ)。但是,我想在从API 17到最新版本的每个Android设备上工作。我该怎么做?
我正在粘贴下面的代码。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
MaterialSearchView searchView = (MaterialSearchView) view.findViewById(R.id.search_view); //Search experiment
inflater.inflate(R.menu.toolbar_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem item = menu.findItem(R.id.search_top);
searchView.setMenuItem(item);
searchView.bringToFront();
}
答案 0 :(得分:1)
检查搜索视图的高程。
要设置高程,请转到XML文件并在searchView集android:elevation="2dp"
内,如果不起作用,可能会更高。
问题是,隐藏或重叠搜索视图的元素具有比搜索视图更高的高度。您可以将重叠元素的高程设置为0dp。例如:android:elevation="0dp"
。并且bringToFront()不仅适用于Lollipop。这有望解决问题
答案 1 :(得分:0)
我已经弄明白了
if (android.os.Build.VERSION.SDK_INT >= 21) //Lollipop
{
view.setZ(15);
for (int i = 0; i < view.getParent().getChildCount(); i++)
{
if(view != view.getParent().getChildAt(i))
{
view.getParent().getChildAt(i).SetZ(5);
}
}
}
view.bringToFront();
for (int i = 0; i < view.getParent().getChildCount(); i++)
{
view.getParent().getChildAt(i).invalidate();
}
view.getParent().requestLayout();
view.getParent().invalidate();
棉花糖
杰利贝恩