我有5个标签的tabbar
,我在我的第4个标签上添加了徽章。我想在服务器执行一些操作后更新我的徽章值。但不知道怎么才能做到这一点。我还想从不同的activities
更新徽章值。Tabbar
上添加徽章的代码片段
TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
badge = new BadgeView(context, tabs, 3);
badge.setTextSize(12);
badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
badge.setText(pref.getString("balance", "0"));
badge.toggle();
提前感谢
在TabActivity
中创建静态TabWidget
对象选项卡,
public static TabWidget tabs;
在您的操作执行后从任何活动访问tabs
对象,更新SharedPreferences
中的balance
。并使用以下代码片段:
在你的其他Activity
.
TabWidget tabs = TabActivity.tabs;
badge = new BadgeView(context, tabs, 3);
badge.setTextSize(12);
badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
badge.setText(pref.getString("balance", "0"));
badge.toggle();
要保存共享首选项,您必须这样做。就像你装子弹的样子。您需要使用相同的首选项。
SharedPreferences prefs = mContext.getSharedPreferences("PREF_KEY", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("balance", balance_value);
editor.commit();
分享我的一些尝试
如果你的视图是这样布局的
android:layout_width="0dp"<br>
android:layout_height="wrap_content"<br>
android:layout_weight="1"<br>
BadgeView
将清空您的视图。
如何解决?补丁
android.view.ViewTreeObserver.OnGlobalLayoutListener
如下:-
ViewTreeObserver vto = container.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
container.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = container.getMeasuredWidth();
int height = container.getMeasuredHeight();
LayoutParams params = target.getLayoutParams();
params.width = width;
params.height = height - BadgeView.this.getHeight();
target.setLayoutParams(params);
}
});