- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to make an icon in the action bar with the number of notifications in Android?
This example demonstrate about How to make an icon in the action bar with the number of notifications in Android
Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.
Step 2 − Add the following code to res/layout/activity_main.xml.
<? xml version = "1.0" encoding = "utf-8" ?> <RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android :layout_width = "match_parent" android :layout_height = "match_parent" tools :context = ".MainActivity" > <Toolbar android :layout_width = "match_parent" android :layout_height = "?actionBarSize" android :background = "@color/colorPrimary" > <RelativeLayout android :layout_width = "match_parent" android :layout_height = "match_parent" android :layout_marginEnd = "16dp" > <TextView android :layout_width = "wrap_content" android :layout_height = "wrap_content" android :layout_centerVertical = "true" android :text = "Notify Me" android :textAppearance = "@style/Base.TextAppearance.AppCompat.Medium" android :textColor = "#FFF" android :textStyle = "bold" /> <RelativeLayout android :id= "@+id/notificationBadge" android :layout_width = "wrap_content" android :layout_height = "wrap_content" android :layout_alignParentEnd = "true" android :layout_centerVertical = "true" > <RelativeLayout android :id = "@+id/badgeLayout" android :layout_width = "wrap_content" android :layout_height = "wrap_content" android :paddingTop = "8dp" > <Button android :layout_width = "36dp" android :layout_height = "36dp" android :background = "@drawable/action_notification" /> </RelativeLayout> <TextView android :id = "@+id/tvBadgeNumber" android :layout_width = "wrap_content" android :layout_height = "wrap_content" android :layout_alignTop = "@+id/badgeLayout" android :layout_alignEnd = "@id/badgeLayout" android :background = "@drawable/item_count" android :text = "0" android :textColor = "#FFF" android :textSize = "16sp" android :textStyle = "bold" /> </RelativeLayout> </RelativeLayout> </Toolbar> <Button android :layout_width = "match_parent" android :layout_height = "wrap_content" android :layout_centerInParent = "true" android :layout_margin = "16dp" android :onClick = "createNotification" android :text = "create notification" /> </RelativeLayout>
Step 3 − Add the following code to src/MainActivity.
package app.tutorialspoint.com.notifyme ; import android.app.NotificationChannel ; import android.app.NotificationManager ; import android.app.PendingIntent ; import android.content.Intent ; import android.os.Bundle ; import android.support.v4.app.NotificationCompat ; import android.support.v7.app.AppCompatActivity ; import android.view.View ; import android.widget.TextView ; public class MainActivity extends AppCompatActivity { public static final String NOTIFICATION_CHANNEL_ID = "10001" ; private final static String default_notification_channel_id = "default" ; static int notificationCount = 0 ; TextView tvBadgeNumber ; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState) ; setContentView(R.layout. activity_main ) ; tvBadgeNumber = findViewById(R.id. tvBadgeNumber ) ; } public void createNotification (View view) { Intent notificationIntent = new Intent(getApplicationContext() , MainActivity. class ) ; notificationIntent.putExtra( "fromNotification" , true ) ; notificationIntent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP | Intent. FLAG_ACTIVITY_SINGLE_TOP ) ; PendingIntent pendingIntent = PendingIntent. getActivity ( this, 0 , notificationIntent , 0 ) ; NotificationManager mNotificationManager = (NotificationManager) getSystemService( NOTIFICATION_SERVICE ) ; NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity. this, default_notification_channel_id ) ; mBuilder.setContentTitle( "My Notification" ) ; mBuilder.setContentIntent(pendingIntent) ; mBuilder.setContentText( "Notification Listener Service Example" ) ; mBuilder.setTicker( "Notification Listener Service Example" ) ; mBuilder.setSmallIcon(R.drawable. ic_launcher_foreground ) ; mBuilder.setAutoCancel( true ) ; if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) { int importance = NotificationManager. IMPORTANCE_HIGH ; NotificationChannel notificationChannel = new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICATION_CHANNEL_NAME" , importance) ; mBuilder.setChannelId( NOTIFICATION_CHANNEL_ID ) ; assert mNotificationManager != null; mNotificationManager.createNotificationChannel(notificationChannel) ; } assert mNotificationManager != null; mNotificationManager.notify(( int ) System. currentTimeMillis () , mBuilder.build()) ; notificationCount ++ ; tvBadgeNumber .setText(String. valueOf ( notificationCount )) ; } }
Step 4 − Add the following code to res/drawable/item_count.xml
<? xml version = "1.0" encoding = "utf-8" ?> <shape xmlns: android = "http://schemas.android.com/apk/res/android" android :shape = "rectangle" > <corners android :radius = "8dp" /> <solid android :color = "#2196F3" /> <stroke android :width = "1dip" android :color = "#FFF" /> <padding android :bottom = "2dp" android :left = "2dp" android :right = "2dp" android :top = "2dp" /> </shape>
Step 5 − Add the following code to AndroidManifest.xml
<? xml version = "1.0" encoding = "utf-8" ?> <manifest xmlns: android = "http://schemas.android.com/apk/res/android" package = "app.tutorialspoint.com.notifyme" > <uses-permission android :name = "android.permission.VIBRATE" /> <application android :allowBackup = "true" android :icon = "@mipmap/ic_launcher" android :label = "@string/app_name" android :roundIcon = "@mipmap/ic_launcher_round" android :supportsRtl = "true" android :theme= "@style/AppTheme" > <activity androidAdvertisements