如图:
当我们长按BottomNavigationView 的Item时会出现当前的toast,看起来很不美观,废话不多说,首先来看我的菜单配置文件
nav_menu.xml
布局文件: activity_main.layout
解决思路:获取子View,设置长按拦截
解决方法:(Kotlin代码)
//清除长按时的toast
fun clearToast(bottomNavigationView: BottomNavigationView,ids : MutableList){
var bottomNavigationMenuView: ViewGroup = (bottomNavigationView.getChildAt(0)as ViewGroup)
//遍历子View,重写长按点击事件 for (positionin 0 until ids.size) {bottomNavigationMenuView.getChildAt(position).findViewById(ids[position]).setOnLongClickListener(object : View.OnLongClickListener{
override fun onLongClick(v: View?): Boolean {return true
}})}}
调用:
//添加的id与配置文件中要绝对一致(包括顺序)
varids =mutableListOf()
ids.add(R.id.homeFragment)
ids.add(R.id.momCircleFragment)
ids.add(R.id.taskFragment)
ids.add(R.id.mineFragment)
clearToast(bottomNavigationView,ids)
解决方法(Java版)
/*
** 清除长按时的toast
** @param bottomNavigationView 当前BottomNavigationView
* @param ids 与配置文件中对应的所有id
*/
public static void clearToast(BottomNavigationView bottomNavigationView, List ids) {
ViewGroup bottomNavigationMenuView = (ViewGroup) bottomNavigationView.getChildAt(0);
//遍历子View,重写长按点击事件
for (int position =0; position < ids.size(); position++){
bottomNavigationMenuView.getChildAt(position).findViewById(ids.get(position)).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}});
}}
调用:
List ids =new ArrayList<>();
ids.add(R.id.homeFragment);
ids.add(R.id.momCircleFragment);
ids.add(R.id.taskFragment);
ids.add(R.id.mineFragment);
clearToast(bottomNavigationView,ids);
现在即可解决长按弹出Toast的问题了,如果你有更好的解决方法,欢迎留言,如果当前帖子没有解决你的问题,你也可以留言,我回及时回复你的
网友评论