Bitte versuchen Sie dies einmal.
1) Erstellen Sie eine XML-Datei für das Abzeichen (z. B. notification_badge_view.xml).
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/badge"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="top|center_horizontal"
android:layout_marginStart="10dp"
android:gravity="center"
android:padding="3dp"
app:srcCompat="@drawable/notification_badge" />
</FrameLayout>
2) Erstellen Sie eine zeichnbare Datei für die Benachrichtigungspunktform (z. B. badge_circle.xml).
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorAccent" />
<stroke
android:width="2dp"
android:color="@android:color/white" />
</shape>
3) Fügen Sie in Ihrer Aktivität onCreate die Badge-Ansicht zu BottomNavigationView hinzu
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_landing);
addBadgeView();
}
4) Und die addBadgeView-Methode ist unten
private void addBadgeView() {
try {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationBar.getChildAt(0);
BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(0);
notificationBadge = LayoutInflater.from(LandingActivity.this).inflate(R.layout.view_notification_badge, menuView, false);
itemView.addView(notificationBadge);
notificationBadge.setVisibility(GONE);
} catch (Exception e) {
e.printStackTrace();
}
}
Hinweis: bottomNavigationBar ist Ihre untere Balkenansicht.
5) Aktualisieren Sie das Abzeichen, um es mit der folgenden Methode ein- und auszublenden
private void refreshBadgeView() {
try {
boolean badgeIsVisible = notificationBadge.getVisibility() != GONE;
notificationBadge.setVisibility(badgeIsVisible ? GONE : VISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}
6) Und machen Sie feines Verstecken, wenn wir auf eine bestimmte untere Balkenseite klicken, indem Sie der folgenden Zeile folgen.
bottomNavigationBar.setOnNavigationItemSelectedListener(new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case R.id.bottom_bar_one:
notificationBadge.setVisibility(GONE);
break;
case R.id.bottom_bar_two:
break;
case R.id.bottom_bar_three:
break;
}
return true;
}
});