Aggiunta di badge alla scheda in android

voglio aggiungere il distintivo alla scheda nella mia applicazione come in iPhone.

Il colpo di schermo del badge utilizzato in iPhone è nel seguente link:

  • L'anteprima della telecamera si è allungata anche dopo aver impostato le size corrette
  • Import la libreria di emojicon in Studio Android
  • Problema di accuratezza della posizione di Android GPS
  • Dove è l'anteprima di layout di Android Studio?
  • Caricamento dinamico delle immagini R.Drawable con variabile
  • Libreria Android Volley: Come submit un'image al server?
  • immettere qui la descrizione dell'immagine

    ho fatto qualche image come badge in app android, il suo schermo è il seguente link: immettere qui la descrizione dell'immagine

    questo non è esattamente il badge che voglio, voglio il badge sulla scheda come in iPhone

    può qualcuno mi suggerisce di aggiungere il distintivo alla scheda in android? Mi aiuti per favore.

    Grazie in anticipo.

    5 Solutions collect form web for “Aggiunta di badge alla scheda in android”

    Questo è ansible utilizzando l'Android ViewBadger. Controllare questo

    Ho anche cercato una soluzione per questo in android sdk e non ho trovato nessuno così sono andato e scritto un TabWidget personalizzato per esso.

    La versione corta:

    • Estendere la class TabWidget e sovrascrivere il metodo: drawChild (canvas di canapa, visualizzazione del figlio, disegno lungo di tempo)
    • Nella pittura è sufficiente disegnare un Bitmap ontop della canvas. Ottieni la posizione x del bambino con child.getRight () e sottrai la width del tuo Bitmap distintivo. Anche disegnare il text per il numero di badge ontop di quello.
    • Per mantenere uno stato per each scheda è ansible utilizzare un HashMap con i tasti per l'indice di ciascuna scheda.
    • Per poter aggiornare le tabs dovunque ho usato una class singleton con il widget all'interno di quello che inizializzavo dall'attività principale.

    Ulteriori informazioni possono essere trovate qui, incluso il codice sorgente per un progetto android di esempio:

    http://nilisoft.com/?p=622

    Godere!

    Questo è un esempio di come aggiungere un badge nella scheda

    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> 

    Questo è badge.xml (cerchio rosso per lo background delle notifiche), ID di TextView: background di nuove notifiche

     <?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> 

    Quindi nel codice puoi semplicemente fare

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

    Come potete vedere il mio layout relativo ha un background @drawable/tab_indicator l' indicatore @drawable/tab_indicator il @drawable/tab_indicator standard della struttura della scheda, che ho ottenuto dal sdk, ti ​​suggerisco anche di ottenerlo dalla cartella dell'ape in sdk poichè wherete anche copiare alcune immagini dalle cartelle disegnate , puoi trovarla your_sdk_drive: \ sdk \ platforms \ android-8

    Vuoi ritrarre l'image della scheda ha esaminato questa risposta Aggiornamento delle icone della scheda Android

    Dopo aver attirato alcune altre soluzioni ho trovato qualcosa di semplice e spero che questo possa aiutare qualcuno.

    creare un layout di tabulazione personalizzato tab_badge.xml

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> <TextView android:id="@+id/tab_badge" android:layout_width="30dp" android:layout_height="30dp" android:background="@drawable/badge_background" android:gravity="center" android:layout_centerVertical="true" android:textColor="@color/colorWhite" android:textSize="20sp" android:textStyle="bold"/> <TextView android:id="@+id/tab_text" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="16sp" android:textColor="@color/colorWhite" android:text="test" android:textStyle="bold" android:gravity="center" android:textAppearance="@style/Widget.AppCompat.Light.ActionBar.TabText" android:layout_toRightOf="@+id/tab_badge"/> </RelativeLayout> 

    badge_background.xml è un disegnatore ovale riempito con il colore che vuoi per il badge

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="@color/colormaterialred500" /> </shape> 

    Estendi la visualizzazione di text per get la class myBadgeView:

     public class myBadgeView extends TextView { private View target; public myBadgeView(Context context, View target) { super(context); init(context, target); } private void init(Context context, View target) { this.target = target; } public void updateTabBadge(int badgeNumber) { if (badgeNumber > 0) { target.setVisibility(View.VISIBLE); ((TextView) target).setText(Integer.toString(badgeNumber)); } else { target.setVisibility(View.GONE); } } } 

    Nella tua attività dichiarare il tablayout come segue:

     tabLayout = (TabLayout) findViewById(R.id.tab_layout); TabLayout.Tab tab1 = tabLayout.newTab(); tab1.setCustomView(R.layout.tab_badge); TextView tab_text_1 = (TextView) tab1.getCustomView().findViewById(R.id.tab_text); tab_text_1.setText("Tab1"); tabLayout.addTab(tab1); badge1 = new myBadgeView(this, tab1.getCustomView().findViewById(R.id.tab_badge)); tab1.getCustomView().findViewById(R.id.tab_badge); //set the badge for the tab badge1.updateTabBadge(badge_value_1); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.