我尝试在操作栏中实施通知图标以显示通知计数。像
这样的东西
我已为其添加了自定义布局文件 NotificationIcon.xml :
<!-- Menu Item Image -->
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:clickable="true"
android:src="@drawable/notification" />
<!-- Badge Count -->
<TextView
android:id="@+id/actionbar_notifcation_textview"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:minWidth="20dp"
android:layout_alignParentRight="true"
android:gravity="center_horizontal"
android:background="@drawable/circle_green"
android:fontFamily="sans-serif-black"
android:textStyle="bold"
android:text="0"
android:textColor="#FFFFFF" />
</RelativeLayout>
在我的菜单中将其用作 main_activity_actions.xml :
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_add"
android:title="@string/AddTag"
android:icon="@+drawable/ic_action_new"
android:showAsAction="always" />
<item
android:id="@+id/notification_icon"
android:title="@string/PendingJobs"
android:actionLayout="@layout/notificationIcon"
android:icon="@+drawable/notification"
android:showAsAction="always" />
<item
android:id="@+id/gps_status_icon"
android:title="@string/GPS"
android:icon="@+drawable/gps_grey"
android:showAsAction="always" />
</menu>
UI看起来很好,但没有为通知图标调用OnOptionsItemSelected。它适用于其他两个。 我确实google了这个链接:onOptionsItemSelected not getting called when using custom action view
我试图在我的主要活动中实现它:
public override bool OnCreateOptionsMenu(IMenu menu)
{
actionBarMenu = menu;
MenuInflater.Inflate(Resource.Menu.main_activity_actions, menu);
var notificationMenuItem = menu.FindItem(Resource.Id.notification_icon);
notificationMenuItem.ActionView.Click += (sender, args) => {
this.OnOptionsItemSelected(notificationMenuItem);
};
return base.OnCreateOptionsMenu(menu);
}
但它对我不起作用。它永远不会触发click事件。 请帮忙。
答案 0 :(得分:0)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
final View notification_icon= menu.findItem(R.id.notification_icon).getActionView();
notification_icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// write ur code here
}
});
return super.onCreateOptionsMenu(menu);
}
使用此代码......希望它有所帮助:)
答案 1 :(得分:0)
我遇到同样的问题并找到以下解决方案:
首先:我真的不知道为什么,但如果你删除了
android:clickable="true"
然后......然后你才得到点击事件!!!
第二:你必须设置监听器......
...
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do Your Stuff.....
}
});
可能有人可以解释为什么这是&#34; android:clickable&#34;事情......我强硬的标准值是真的??
答案 2 :(得分:0)
您已使ImageButton可单击,然后为menuItem的布局编写了clickListener。您可以观察到,如果在ImageButton外部但在MenuItem布局内部单击,则侦听器将起作用。原因很简单,ImageButton的clickListener无关,设置Clickable = true时定义此按钮是否对单击事件作出反应。只需将Clickable = false设置为简单,您的按钮将不会对其单击事件作出反应,最终您的整个布局将对您定义的clickListener作出反应,然后您的问题将得到解决。