更改向上箭头的颜色后标记为私人警告

Mac*_*ver 16 java android android-actionbar android-support-library android-studio

在操作栏中为后退箭头定义自定义颜色后,将返回警告.可以做些什么来摆脱这个警告?

        final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha);
        upArrow.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
        actionBar.setHomeAsUpIndicator(upArrow);
Run Code Online (Sandbox Code Playgroud)

资源@ drawable/abc_ic_ab_back_mtrl_am_alpha在com.android.support:appcompat-v7中标记为私有

laz*_*bug 15

请参阅选择资源以公开原因.

总之,绘制/ abc_ic_ab_back_mtrl_am_alpha是程序兼容性-V7的私人资源,并拟用作通过该库.你不应该使用它.

如果您确实想要使用它,请将其复制到您的项目中


小智 13

而不是做穆罕默德的

android {
    lintOptions {
        disable 'PrivateResource'
    } 
}
Run Code Online (Sandbox Code Playgroud)

我建议执行以下操作,这是对语句的本地修复.优点是不必全局停用棉绒检查(以后很容易忘记再次激活).

对于XML:

tools:ignore="PrivateResource"
Run Code Online (Sandbox Code Playgroud)

代码:

@SuppressLint("PrivateResource")
Run Code Online (Sandbox Code Playgroud)

实际上,您的代码应该看起来像这样:

XML:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
    tools:ignore="PrivateResource" />
Run Code Online (Sandbox Code Playgroud)

码:

@SuppressLint("PrivateResource")
final Drawable upArrow = ContextCompat.getDrawable(context, R.drawable.abc_ic_ab_back_mtrl_am_alpha);
Run Code Online (Sandbox Code Playgroud)