ここでは、あなたの質問に別の解決策です。 私は以下のように解像度/メニュー/ menu.xmlでメニューを使用しています
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_send"
android:orderInCategory="100"
android:title="@string/send_menu"
app:showAsAction="always" />
</menu>
そしてここでは、私の活動のクラスです。メニュー項目にimagebuttonを追加し、画像リソースを設定しました。 Backgroudは透明なmenuItemを持つためにnullに設定されています。
public class MyActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem item = menu.findItem(R.id.action_send);
ImageButton imageButton = new ImageButton(this);
imageButton.setImageResource(R.drawable.ic_send_white_24dp);
imageButton.setBackground(null);
item.setActionView(imageButton);
item.getActionView().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.d("Send Button", "Long pressed");
Toast.makeText(MainActivity.this, "Send button long pressed", Toast.LENGTH_LONG).show();
onSendMenuItemLongClick();
return true;
}
});
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSendMenuItemClick(item);
}
});
return super.onCreateOptionsMenu(menu);
}
private void onSendMenuItemLongClick() {
}
private void onSendMenuItemClick(MenuItem item) {
Toast.makeText(this, "Send button clicked", Toast.LENGTH_LONG).show();
}
}