Android的Toolbar裏面,能夠添加菜單,可是使用過程當中發現了一點問題,就是菜單的item長按時,會在下面出現一個toast,toast當前菜單的title。可是咱們並不想有這個toast。
在網上搜了,並無很好的解決方法。其中一種解決方法是,經過findViewById(R.id.menu_id)找到對應的菜單item,而後給這個菜單的itemview設置OnLongClickListenerandroid
final View v = findViewById(R.id.menu_id); if (v != null) { v.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return false; } }); }
這個方法雖然解決設置指定的菜單長按彈出toast,但對應隱藏到省略號的那個item長按沒有解決,由於那個view不是本身定義的,是系統定義的。網上搜不到,而後我本身寫了一個工具類。
原理是遍歷Toolbar的childview,找到其中顯示菜單的ActionMenuView,而後遍歷這個ActionMenuView,把菜單item的OnLongClickListener都設置爲null,就ok了。ide
import android.support.v7.widget.ActionMenuView; import android.support.v7.widget.Toolbar; /** * Created by zhangyi on 2017/12/11. */ public class ToolbarUtil { /** * 取消Toolbar菜單長按時,出現的toast */ public static void cancelToast(Toolbar toolbar){ if (toolbar == null) { return; } toolbar.post(new Runnable() { @Override public void run() { for (int i = 0; i < toolbar.getChildCount(); i++) { if(toolbar.getChildAt(i) instanceof ActionMenuView){ ActionMenuView actionMenuView= (ActionMenuView) toolbar.getChildAt(i); for (int i1 = 0; i1 < actionMenuView.getChildCount(); i1++) { actionMenuView.getChildAt(i1).setOnLongClickListener(null); } break; } } } }); } }
參考連接:http://blog.csdn.net/a87024341/article/details/52526428工具