Đây là một ví dụ về Làm thế nào để thêm một huy hiệu trong tab
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>
Đây là badge.xml (vòng tròn màu đỏ để thông báo nền), TextView id:new_notifications
nền
<?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>
Sau đó, trong đoạn code bạn chỉ có thể làm
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));
Như bạn thấy Giao diện tương đối của tôi có một nền @drawable/tab_indicator
các chỉ báo tab .xml là tiêu chuẩn của khuôn khổ có thể vẽ được của tab, mà tôi nhận được từ sdk, tôi đề nghị bạn cũng nên lấy nó từ thư mục của api trong sdk như bạn cũng cần phải sao chép một số hình ảnh từ các thư mục drawable, bạn có thể tìm thấy nó your_sdk_drive: \ sdk \ nền tảng \ android-8
Nguồn
2013-05-03 13:53:06
dễ sử dụng ... BadgeViewer là lớp học mà bạn sẽ sử dụng. bạn cũng có thể sao chép thay vì sử dụng nó làm thư viện .. –
@Paresh Mayani tôi đã sử dụng thư viện BadgeViewer này và tôi đang gặp vấn đề ở đây tôi đã đăng câu hỏi http://stackoverflow.com/questions/26099124/tabhost-set- huy hiệu-vị trí-trong-tab-android –