今天遇到一個(gè)bug及志,我給toolbar加了一個(gè)menu巡验,但是點(diǎn)擊沒有任何反應(yīng)损离,換句話說這個(gè)按鈕無法被點(diǎn)擊。
menu文件 menu_toolbar_announcement_comment:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_comment"
android:title="@string/comment"
android:visible="true"
app:actionLayout="@layout/menu_provider_number_subscript"
app:showAsAction="always" />
</menu>
代碼:
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_comment:
//打開評(píng)論
showComment();
break;
}
return true;
}
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar_announcement_comment, menu);
return true;
}
代碼中setOnMenuItemClickListener方法沒有起到任何的作用禁谦。
我覺得原因可能是胁黑,我在menu中使用了自定義布局
app:actionLayout="@layout/menu_provider_number_subscript"
此時(shí)需要把menu的點(diǎn)擊事件寫在onCreateOptionsMenu中
具體如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar_announcement_comment, menu);
MenuItem item = menu.findItem(R.id.menu_comment);
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//打開評(píng)論
showComment();
}
});
return true;
}
原理我還沒有搞懂,等我弄明白了回來填坑州泊。