2013-04-17 66 views
3

我有tabbar 5個標籤,我在第4個標籤上添加了徽章。我想在服務器執行一些操作後更新我的徽章值。但不知道如何做到這一點。另外我想從不同的activities更新徽章值。在Tabbar如何在Android中更新標籤上的徽章值?

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(); 

代碼片段添加徽章預先感謝您

+0

嗨SANGRAM帕蒂爾,你可以發佈示例代碼這裏在標籤上新增的徽章,和(的.jar)的文件正在使用的圖書館嗎?給我鏈接該庫文件 – Jayesh

+1

這裏是示例代碼。 https://github.com/jgilfelt/android-viewbadger –

+0

我試過一次,但當我設置圖像在標籤背景作爲setIndicator(視圖)然後徽章不能正確顯示....是任何解決方案? – Jayesh

回答

5

TabActivity這樣創建靜態TabWidget對象選項卡,

public static TabWidget tabs; 

訪問tabs對象從任何活動的操作後執行,更新balanceSharedPreferences。並使用以下代碼片段。

在你的其他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(); 

希望這會對你有幫助。

+1

Thankx Amol,它爲我工作。 –

+0

快樂是我的快樂編碼:) –

+0

不工作在我的情況 –

0

爲了節省你必須做這樣的共同喜好。有點像你如何加載它。您需要使用相同的首選項。

 SharedPreferences prefs = mContext.getSharedPreferences("PREF_KEY", 0); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putString("balance", balance_value); 
     editor.commit(); 
0

分享我的一些嘗試的

如果你的觀點是佈局這樣

android:layout_width="0dp"<br> 
android:layout_height="wrap_content"<br> 
android:layout_weight="1"<br> 

BadgeView WIL空白你的看法。

如何解決?修補

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