アクションバーの戻る矢印のカスタム色を定義すると、警告が返されます。この警告を取り除くには何ができますか?
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でプライベートとしてマークされています
理由は 公開するリソースの選択 を参照してください。
つまり、drawable/abc_ic_ab_back_mtrl_am_alphaはappcompat-v7のプライベートリソースであり、そのライブラリでonlyを使用することを目的としています。使用しないでください。
本当に使いたい場合は、プロジェクトにコピーしてください
モハマドの代わりに
Android {
lintOptions {
disable 'PrivateResource'
}
}
私は以下を実行することをお勧めします。これはステートメントのローカル修正です。利点は、lint-checksをグローバルに非アクティブ化する必要がないことです(後で再びアクティブ化することを簡単に忘れることがあります)。
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);
Androidこの投稿は、Android Open Source Project-Issue Tracker
同様の返信 問題
ここでの根本的な原因は、ライブラリが別のライブラリに依存している場合、依存しているライブラリからすべてのリソースを独自に宣言されたR.txt(AARファイル内)にインポートすることです。
ただし、これらの依存関係のpublic.txt宣言は含まれていないため、これらのシンボルは宣言されたものとして公開されますが、公開されません。民間。
2つの修正案を検討しています:
(1)ライブラリーのリソース可視性ルックアップで、依存関係からインポートされたシンボルを削除します(その依存関係が可視性情報を提供するかどうかにかかわらず)、または
(2)可視性ルックアップロジックを逆にします。シンボルが任意のライブラリでパブリックとして検出された場合、シンボルがどこでもプライベートとして宣言されている場合はそうであるという現在のロジックではなく、パブリックと見なします。
私は2で行くと思います。シンボルが最終的に下流のライブラリにインライン化されるシナリオを考えると、現在のロジックは意味がありません。
彼らが言ったように:
現時点での唯一の回避策は、プライベートリソースのlintチェックをオフにすることです。
Android { lintOptions { disable 'PrivateResource' } }
彼らはそれが修正されたと言っていますが、私は今日この問題を経験し、Android studio 1.5.1とgradle 1.5を使用しています
この答え で行われているように、Lintの抑制を可能な限りソースに近づけることを好みますが、それが機能しない場合は、抑制を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もこのフィールドをオートコンプリートします。