Can't use setForeground method on ImageView

荒凉一梦 提交于 2019-11-30 23:47:41

问题


I want to use the setForeground method to show a "play" icon in the center of my ImageView to indicate the user that a video will play if they press it.

Currently I'm having this error which I cannot solve:

Although the documentation says the method should be available since API 1:

I'm targeting and compiling against API 23 with build tools version 23.0.1. I'm targeting min API 16.


回答1:


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




回答2:


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));



回答3:


You can either change

minSdkVersion 16

with

minSdkVersion 23

or import android.support.annotation.RequiresApi;
to your class and this statement

@RequiresApi(api = Build.VERSION_CODES.M)

to the activity you used setForground method in it.

Note that M in @RequiresApi(api = Build.VERSION_CODES.M) stands for API 23

and you can use each one of the items below that each one stand for a specific API instead of M

BASE 1
BASE_1_1 2
CUPCAKE 3
DONUT 4
ECLAIR 5
ECLAIR_0_1 6
ECLAIR_MR1 7
FROYO 8
GINGERBREAD 9
GINGERBREAD_MR1 10
HONEYCOMB 11
HONEYCOMB_MR1 12
HONEYCOMB_MR2 13 ICE_CREAM_SANDWICH 14
ICE_CREAM_SANDWICH_MR1 15
JELLY_BEAN 16
JELLY_BEAN_MR1 17
JELLY_BEAN_MR2 18
KITKAT 19
KITKAT_WATCH 20
LOLLIPOP 21 LOLLIPOP_MR1 22
M 23
N 24
N_MR1 25
O 26
CUR_DEVELOPMENT 10000



来源:https://stackoverflow.com/questions/33201712/cant-use-setforeground-method-on-imageview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!