如何更新标签上的标签值在Android



我有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);             
    } 
});

相关内容

  • 没有找到相关文章