我有一個android應用程序,其中主屏幕是一個選項卡視圖。其中一個標籤轉到「收件箱」活動。我想顯示一個數字,指出新消息的數量。這似乎是iPhone應用程序的標準功能。有沒有這種系統支持?如果不是,那麼爲android tabviews實現這種效果最簡單的方法是什麼?Android:顯示新標籤數量選項卡
回答
從我可以在Android源代碼(TabHost.java)中讀到的東西,沒有辦法像iPhone一樣用標準的小部件來做。
你可以做的是:
- 每當收件箱計數被改變,刪除使用http://developer.android.com/reference/android/widget/TabHost.html#clearAllTabs()所有選項卡
- 然後,創建再次使用http://developer.android.com/reference/android/widget/TabHost.html#addTab(android.widget.TabHost.TabSpec)選項卡,但確保了則tabspec與初始化[http://developer.android.com/reference/android/widget/TabHost.TabSpec.html#setIndicator(java.lang.CharSequence,android.graphics.drawable.Drawable)] [1]。您可以在那裏傳遞自己的繪圖並使用它自己繪製徽章。
雖然它不是iPhone風格徽章的替代品,因爲iPhone徽章在標籤的topRight角落相當不錯。到目前爲止,沒有辦法改變它。
另一方面,這是所有的Java人都可以擴展TabHost類並添加對iPhone風格徽章的支持。
[1]:http://developer.android.com/reference/android/widget/TabHost.TabSpec.html#setIndicator(java.lang.CharSequence,android.graphics.drawable.Drawable)
我假設你有一個你的對象列表。您可以爲該對象創建一個「讀取」屬性,然後在打開選項卡的時刻對read = false
的對象數進行計數。
這是一例如何在標籤
chat_tab.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_weight="1"
android:layout_marginLeft="-3dip"
android:layout_marginRight="-3dip"
android:orientation="vertical"
android:background="@drawable/tab_indicator" >
<ImageView
android:id="@+id/chat_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/chat_icon"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/new_notifications"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/chat_icon"
android:layout_toRightOf="@+id/chat_icon"
android:layout_marginLeft="-8dp"
android:layout_marginTop="0dp"
android:paddingTop="2dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="2dp"
android:textSize="8sp"
android:textStyle="bold"
android:textColor="@android:color/primary_text_dark"
android:background="@drawable/badge"
android:visibility="gone"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chat"
style="@android:attr/tabWidgetStyle"
android:textColor="@android:color/tab_indicator_text"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
添加一個徽章
這是badge.xml(通知背景的紅色圓圈),TextView id:new_notifications background
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke android:width="2dp" android:color="#FFFFFF" />
<corners android:radius="10dp"/>
<padding android:left="2dp" />
<solid android:color="#ff2233"/>
</shape>
然後在代碼中,你可以簡單地做
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View chatTab = inflater.inflate(R.layout.chat_tab, null);
tvNewNotifications = (TextView) chatTab.findViewById(R.id.new_notifications);
intent = new Intent().setClass(MainTab.this, Chat.class);
tabSpec = tabHost
.newTabSpec("chat")
.setIndicator(chatTab)
.setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
正如你可以看到我的相對佈局有背景@drawable/tab_indicator
的標籤indicator.xml是標籤的框架標準繪製,這我從SDK獲得,我建議你也應該從SDK中的api文件夾中獲取它,因爲你還需要從可繪製文件夾複製一些圖像,你可以找到它 your_sdk_drive:\ sdk \ platforms \ android-8
您可以下載viewbadger。jar文件從這裏,可以使用本示例參考 https://github.com/jgilfelt/android-viewbadger
下面是一個示例代碼
TabWidget選項卡=(TabWidget)findViewById(android.R.id.tabs); BadgeView badge = new BadgeView(context,tabs,3); badge.setTextSize(12); badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT); badge.setText(「0」)); badge.toggle();
- 1. Android調用在選項卡內顯示花葯標籤
- 2. 顯示選定的標籤不同的jQuery Ajax選項卡
- 3. Android選項卡,如何顯示選定選項卡的圖像
- 4. Xamarin Android ActionBar選項卡 - 1選項卡不顯示文本
- 5. jQuery選項卡 - 添加新選項卡後不顯示內容
- 6. 選擇標籤顯示小寫選項
- 7. 更新標籤在Android TabHost中的活動選項卡
- 8. 顯示jQuery UI選項卡中的所有標籤內容
- 9. 引導導航的選項卡不顯示標籤內容
- 10. 如何在所有選項卡控件中顯示標籤
- 11. 如何不顯示選項卡式活動的一些標籤?
- 12. Bootstrap選項卡正在工作,但標籤內容未顯示
- 13. Angularjs - 無法顯示在選項卡中單擊標籤
- 14. jQuery UI選項卡 - 顯示其他內容<a>標籤
- 15. 我的選項卡式的活動沒有顯示在標籤
- 16. GtkNotebook不顯示選項卡標籤內容
- 17. 如何根據JSP中的SELECT標籤值顯示選項卡?
- 18. 不想顯示標籤佈局perticular選項卡上單擊
- 19. 顯示一個選項卡沒有顯式點擊標籤圖標
- 20. 看不到刷卡選項卡標籤
- 21. jQuery選項卡()函數不顯示選項卡
- 22. 顯示空格選項標籤
- 23. 標籤中顯示的選定項目
- 24. JavaFX-如何隱藏標籤內容區域並僅顯示特定選項卡上的選項卡標題
- 25. 刷新選項卡onTabReselected Android
- 26. 按鈕顯示選項卡
- 27. Jquery顯示選項卡
- 28. 選項卡顯示默認值,需要顯示我們選擇的選項卡
- 29. jquery選項卡不顯示ajax數據
- 30. 從當前選項卡的標籤中刪除選項卡
與iPhone標籤小部件上的BADGE圖標類似,對不對? – 2010-12-03 08:33:12
是的,完全像iPhone上的BADGE圖標標籤部件=) – tstyle 2010-12-06 07:38:47
您可以嘗試下面鏈接中介紹的方法。 http://npcom.posterous.com/iphone-like-tabview-badges-in-android – 2011-11-29 07:25:06