2016-12-06 35 views
-2

如何添加標籤上的標籤,以便用戶可以跟蹤標籤有哪些通知到目前爲止我嘗試使用viewbadger但代碼已被棄用。我試過這段代碼。Android Studio:在標籤上添加通知計數

  TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 
     tabLayout.getTabAt(0).setIcon(ICONS[0]); 
     tabLayout.getTabAt(1).setIcon(ICONS[1]); 
     tabLayout.getTabAt(2).setIcon(ICONS[2]); 
     tabLayout.getTabAt(3).setIcon(ICONS[3]); 
     tabLayout.setSelectedTabIndicatorColor(Color.WHITE); 

//  m_tabs = (TabWidget) findViewById(R.id.tabs1); 
//  badge1 = new BadgeView(this, m_tabs, 0); 
//  badge1.setText("5"); 
//  badge1.show(); 

//   TabLayout.Tab tab = tabLayout.getTabAt(0); 
//   ImageView imageView = new ImageView(OwnerTabs.this); 
//   tab.setCustomView(imageView); 
//   badge = new BadgeView(OwnerTabs.this, imageView); 

有人可以給我其他方式這樣做嗎?先謝謝你們。

回答

1

試試這個。 onCreateOptionMenu的代碼。

@Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      super.onCreateOptionsMenu(menu); 
      getMenuInflater().inflate(R.menu.main_activity_navigation, menu); 

      MenuItem menuItem = menu.findItem(R.id.action_settings); 
      menuItem.setIcon(buildCounterDrawable(4, android.R.color.transparent)); 


      return true; 
     } 

     private Drawable buildCounterDrawable(int count, int backgroundImageId) { 
      LayoutInflater inflater = LayoutInflater.from(this); 
      View view = inflater.inflate(R.layout.noitification_count, null); 
      view.setBackgroundResource(backgroundImageId); 

      if (count == 0) { 
       View counterTextPanel = view.findViewById(R.id.badge_layout1); 
       counterTextPanel.setVisibility(View.GONE); 
      } else { 
       TextView textView = (TextView) view.findViewById(R.id.badge_notification_1); 
       textView.setText("" + count); 
      } 

      view.measure(
        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 
        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
      view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 

      view.setDrawingCacheEnabled(true); 
      view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 
      Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); 
      view.setDrawingCacheEnabled(false); 

      return new BitmapDrawable(getResources(), bitmap); 
     } 

notification_count.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@android:style/Widget.ActionButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:clickable="true" 
    android:gravity="center" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:id="@+id/badge_layout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <RelativeLayout 
      android:id="@+id/relative_layout_item_count" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="@dimen/_100sdp" 
       android:layout_height="@dimen/_100sdp" 
       android:background="@drawable/ic_dollar" /> 
     </RelativeLayout> 

     <TextView 
      android:id="@+id/badge_notification_1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignRight="@id/relative_layout_item_count" 
      android:background="@drawable/circle_bg" 
      android:gravity="center" 
      android:text="12" 
      android:textColor="#FFF" 
      android:padding="@dimen/_10sdp" 
      android:textSize="@dimen/_30sdp" 
      android:textStyle="bold" /> 
    </RelativeLayout> 
     </RelativeLayout> 

把你的形狀文件

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <solid 
     android:color="@color/green"/> 
</shape> 

它爲我工作。你可以檢查here

+0

這將與製表符一起工作嗎? – JosephG

+0

是的,但你必須稍微修改它。 –

+0

我想你必須使用'tabLayout.getTabAt(0).setIcon(buildCounterDrawable(4,android.R.color.transparent));'。嘗試這個。 –

相關問題