how to display ToolTip in android?

Android supports "tool-tip" only for ActionBar buttons from Android 4.0 on. But as Jaguar already mentioned, tool-tips in Android doesnt make so much sense, since there is no concept of hovering.

From Android 4.0 the normal title text (that you set in the xml file or via code) will appear if you make a long click on the button. But if enough space is on the screen, it will be visible in the ActionBar all the time beside the icon.

If you want to have it for a custom view, you need to implement it yourself by adding a LongClickListener to your view, and show a Toast when pressed long:

view.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View v) {
        Toast.makeText(v.getContext(), "My tool-tip text", Toast.LENGTH_SHORT).show();
        return true;
    }
}

Of course you should use a resource for the string, and not the hard coded string.


Possibly using myView.setTooltipText(CharSequence) (from API-level 26) or TooltipCompat (prior to API-level 26) is an additonal option:

TooltipCompat.setTooltipText(myView, context.getString(R.string.myString));

Documentation says:

Helper class used to emulate the behavior of {@link View#setTooltipText(CharSequence)} prior to API level 26.


Using AndroidX is the recommended way.

Android 4.0 (API 14) and higher

AndroidX support Library added support for tooltips (small popup windows with descriptive text) for views and menu items.

Use setTooltipText to set the tooltip text which will be displayed in a small popup next to the view.

See the following example:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
TooltipCompat.setTooltipText(fab, "Send an email");

The tooltip will be displayed:

  • On long click, unless it is handled otherwise (by OnLongClickListener or a context menu).
  • On hover, after a brief delay since the pointer has stopped moving

To add the Appcompat library into your project,

  1. Open the build.gradle file for your application.

  2. Add the support library to the dependencies section.

    dependencies {
    
    compile "androidx.appcompat:appcompat:1.1.0"
    }
    

Android 8.0 (API level 26) and higher

If your minimum supported version is Android 8.0 (API level 26) and higher, you can specify the tooltip text in a View by calling the setTooltipText() method. You can also set the tooltipText property using the corresponding XML.

To specify the tooltip text in your XML files, set the android:tooltipText attribute, as shown in the following example:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:tooltipText="Send an email" />

To specify the tooltip text in your code, use the setTooltipText(CharSequence) method, as shown in the following example:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setTooltipText("Send an email");

Starting with Android API 14+, there is an event for hovering. You can do,

view.setOnHoverListener(...)

and listen for MotionEvents such as ACTION_HOVER_ENTER and ACTION_HOVER_EXIT, instead of onLongClick.

Tags:

Android