13

Tôi muốn thực hiện các chức năng tương tự như đã có trong iPhoneBadge trên Android TabHost

enter image description here

tôi thực hiện các tùy chỉnh Tabhost giống như trong iPhone ở thanh dưới cùng. Tôi có thể đặt hai biểu tượng cho trạng thái Bình thường/Được chọn nhưng tôi cần biểu tượng động với số lượng thông báo như được đưa ra trong Hình ảnh.

Cảm ơn

Trả lời

18

Android ViewBadger có thể là giải pháp cho bạn. (FYI, tôi đã không thực hiện nó chưa)

Dưới đây là các snap bạn có thể có một đầu ra bởi giải pháp này:

enter image description here

+0

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 .. –

+0

@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 –

3

Đâ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

+1

thnks raja babar :) –

Các vấn đề liên quan