好吧,我已經想通了。幸運的是,我不必轉向XML選擇。我所要做的就是創建一個新的View對象,並且apply it as the MenuItem's actionView。難的部分實際上是將視圖對象設置爲任何普通MenuItem
對於當前主題的樣子(如果我在不使用actionView的情況下添加它)。按照片段(假設我的活動名稱爲MyActivity
):
public boolean onCreateOptionsMenu(Menu menu) {
Button buttonView = new Button(this, null, android.R.attr.actionButtonStyle);
if (Build.VERSION.SDK_INT < 23) {
buttonView.setTextAppearance(this, android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Menu);
} else {
buttonView.setTextAppearance(android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Menu);
}
buttonView.setText(R.string.option_title); // button label
buttonView.setContentDescription("Content description");
buttonView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
MyActivity.this.onOptionsItemSelected(item);
}
});
MenuItem item = menu.add(R.string.option_title);
item.setActionView(buttonView);
...
return super.onCreateOptionsMenu(menu);
}