美文网首页程序员
BottomNavigationView 长按时出现的吐司,Bo

BottomNavigationView 长按时出现的吐司,Bo

作者: SuperXcy | 来源:发表于2020-07-09 18:14 被阅读0次

如图:

当我们长按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的问题了,如果你有更好的解决方法,欢迎留言,如果当前帖子没有解决你的问题,你也可以留言,我回及时回复你的

相关文章

网友评论

    本文标题:BottomNavigationView 长按时出现的吐司,Bo

    本文链接:https://www.haomeiwen.com/subject/uuvscktx.html