先上效果图。
如图,一旦选取物品,顶部菜单栏购物车有红点数字提示。
一看到这个功能,大家可能会马上想到viewbadger这个工具。
然而这个工具却没有很好的方法实现这个功能。
到stackoverflow去查了几个方法,都没有很好地实现。
直到翻查Github viewbadger作者与其他开发者答问时才得到一个比较好的方案。
public boolean onCreateOptionsMenu(Menu menu) {
mMenuItem = menu.findItem(R.id.cart);
ImageButton iconView = new ImageButton(this, null,com.actionbarsherlock.R.style.Widget_Sherlock_ActionButton);
iconView.setImageDrawable(mMenuItem.getIcon());
iconView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// The thing is clicked, do something useful.
startActivity(new Intent(ProductDetailActivity.this,OrderCartAt.class));
}
});
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
LinearLayout container = new LinearLayout(this);
container.setLayoutParams(layoutParams);
container.addView(iconView);
container.setGravity(Gravity.CENTER);
List<HashMap<String, String>> list = mAppContext.getCartList();
int size = list.size();
BadgeView mBadgeView = new BadgeView(this, iconView);
mBadgeView.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
mBadgeView.show();
mMenuItem.setActionView(container); }
这样就可以实现,但图片显示会有点问题。
我直接叫UI设计在购物车右边预留一些空位,得到预图的效果。
希望能帮到大家。