自定義menu菜單佈局

原文鏈接

一:先寫一個自定義的菜單佈局
這個佈局可以根據業務需要任意寫

<?xml version="1.0" encoding="utf-8"?>


二:在menu的item中引用該佈局
這了用到了app:actionLayout來指定自定義菜單佈局,需要注意的是必須是app:actionLayout,而不應該是android:actionLayout,否則onCreateOptionsMenu方法中的getActionView()方法會返回null。

<?xml version="1.0" encoding="utf-8"?> 三:onCreateOptionsMenu(Menu menu)中引用該佈局 這一步的目的是將你自定義的菜單當成普通菜單處理,通過給自定義的菜單佈局設置單擊事件,讓其在單擊時執行onOptionsItemSelected(MenuItem item),從而讓其像普通的Menu item一樣在onOptionsItemSelected中處理點擊事件就可以了。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.head_flavors, menu);
    final MenuItem item = menu.findItem(R.id.flavor);

// getActionView()返回你自定義的菜單佈局,設置單擊事件的目的是,讓其單擊時執行onOptionsItemSelected,從而只需統一在onOptionsItemSelected處理即可
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
}
});
return super.onCreateOptionsMenu(menu);
}
四:沒有第四步了!
由第三步可知,onOptionsItemSelected(MenuItem item) 方法無需做任何改變。

五:最後看看效果


作者:yzjgogo
來源:CSDN
原文:https://blog.csdn.net/yinzhijiezhan/article/details/80997554
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章