Search code examples
androidtooltipimagebutton

setTooltipText() and android:tooltipText are not working in Nougat


I have an ImageButton, when I did some test for my app, I found that I could not show the tooltipText in my Xiaomi Note 4 with Android N device. But it shows up perfectly fine in my Samsung S8 with Android O, any idea why this can happen and how to mitigate this? The minimum reproducible code is really simple, just create a basic android project in android studio and replace the default HelloWorld Textview to

<ImageButton
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:tooltipText="Show tooltip"
        android:src="@mipmap/ic_launcher"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

I think there must be some way I can make it work because the auto generated toolbar obviously has tooltip. So there must be something I'm missing to make it work in Xiaomi device.


Solution

  • setTooltipText (CharSequence tooltipText) is added in added in API level 26. To use it in devices with API level prior 26, you can use TooltipCompat#setTooltipText(View view, CharSequence tooltipText) from v7 support library.

    To use it, add this in gradle

        implementation "com.android.support:appcompat-v7:27.1.1"
    

    Example:

    
    `TooltipCompat.setTooltipText(view, "Tooltip text");`