Can't use setForeground method on ImageView

That is a documentation bug. setForeground() existed on FrameLayout from API Level 1; it is only on View as of API Level 23.


Since the setForeground method was added for the FrameLayout in API Level 1, as a workaround you can wrap your view inside a FrameLayout then use the setForeground method to the layout, it will work, eg:

in your xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fl_item_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/niImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:contentDescription="@string/imageView_description"
        android:scaleType="fitCenter"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</FrameLayout>

Then in code, use:

holder.flItemContainer.setForeground(ContextCompat.getDrawable(a, R.drawable.play));