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

时间:2015-10-03 20:39:23

标签: java android android-studio android-actionbar android-support-library

在操作栏中为后退箭头定义自定义颜色后,将返回警告。如何摆脱这种警告呢?

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

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

4 个答案:

答案 0 :(得分:13)

而不是做穆罕默德的

android {
    lintOptions {
        disable 'PrivateResource'
    } 
}

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

对于XML:

tools:ignore="PrivateResource"

代码:

@SuppressLint("PrivateResource")

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

XML:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
    tools:ignore="PrivateResource" />

代码:

@SuppressLint("PrivateResource")
final Drawable upArrow = ContextCompat.getDrawable(context, R.drawable.abc_ic_ab_back_mtrl_am_alpha);

答案 1 :(得分:13)

请参阅Choose resources to make public

简而言之,drawable / abc_ic_ab_back_mtrl_am_alpha是appcompat-v7的私有资源,旨在由该库使用 only 。你不应该使用它。

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

答案 2 :(得分:2)

它似乎是android中的一个错误 这篇文章在Android开源项目 - 问题跟踪器

中形成了一个项目成员

回复类似的Issue

  

这里的根本原因是当一个库依赖于另一个库时   它从它依赖的任何库中导入所有资源   自己声明的R.txt(在AAR文件中)。

     

但是,它并没有包含那些的public.txt声明   依赖关系,所以现在它最终暴露这些符号,但是   不公开 - 例如私人的。

     

我正在考虑两种补救方案:

     

(1)在库的资源可见性查找中,删除任何   从依赖项导入的符号(无论是否依赖   提供可见性信息),或

     

(2)反转可见性查找逻辑:如果我们发现符号是公共的   在任何库中,都要考虑它是公开的而不是当前的逻辑   如果符号在任何地方被声明为私有,那就是。

     

我想我会选择2;当前的逻辑没有意义   考虑到符号最终在下游内联的情况   库。

他们说:

  

现在唯一的解决方法是关闭私有资源lint   检查:

modelBuilder.Entity<TypeA>().HasMany<TypeB>(i => i.Bees).WithMany();
modelBuilder.Entity<TypeB>().HasMany<TypeA>(i => i.Aaas).WithMany();

他们说它已修复,但我今天遇到了这个问题而且我使用的是android studio 1.5.1和gradle 1.5

答案 3 :(得分:0)

虽然我更喜欢使Lint抑制作用尽可能靠近源,如this answer中所做的那样,但如果不起作用,也可以在lint.xml文件中列出抑制作用位于您的app文件夹中。看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="<issue-id>">
    <ignore path="<path-to-source>.<file-extension>"/>
</issue>

其中issue-id是您要禁止的类型,例如UseSparseArrays。 Android Studio还将为您自动填写此字段。