BottomNavigationView 长按时出现的吐司,BottomNavigationView长按Item出现提示文字

废话不多说,先上图,然后上代码,直奔主题

如图:




当我们长按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与配置文件中要绝对一致(包括顺序)

var ids =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的问题了,如果你有更好的解决方法,欢迎留言,如果当前帖子没有解决你的问题,你也可以留言

有问题可以在下方评论,我看到会第一时间回复你,这就是我,话不多说的徐某人,徐某人不谈原理,只助你CV

你可能感兴趣的:(BottomNavigationView 长按时出现的吐司,BottomNavigationView长按Item出现提示文字)