ContextThemeWrapper
を使用して、スタイルを動的にImageButton
に適用し始めました。ベース 回答 私の他の質問への回答、および他への回答 類似質問 。
_ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes);
mImageButton = new AppCompatImageButton(wrapper, null, 0);
_
しかし、最近、次のようなContextThemeWrapper
コンストラクターでlintエラーが表示され始めました。
ContextThemeWrapper
は、同じライブラリグループ内からのみ呼び出すことができます(groupId = com.Android.support)
クラスが@RestrictTo(LIBRARY_GROUP)
注釈でマークされていることに気付きました。これにより、lintエラーが表示されます。しかし、whyに関する情報は見つかりません。これは_com.Android.support
_ライブラリグループに制限されています。
私の知る限り、これはスタイル、テーマ、テーマオーバーレイをプログラムでView
に適用する唯一の方法です。デフォルトのスタイル属性をコンストラクターの3番目の引数として設定する以外。だから、なぜその使用がまったく制限されるのだろうと思っています。サポートライブラリの外部でクラスを使用する際に問題がありますか?気付いていない副作用がありますか?
唯一の 類似した質問 私が遭遇したのは、(現在修正されている)バグに関するものです。これにより、このリントエラーがonCreate
のサブクラスのAppCompatActivity
メソッドに表示されました。この発生はバグではなく、意図的な制限だとは思いません。背後にある理由を知りたいです。
注意する必要があります。 (現在)この制限は、実際にContextThemeWrapper
を使用するコードに影響を与えないようです。コンパイルして正常に動作し、期待どおりに動作します。
_Android.view.ContextThemeWrapper
_ != _Android.support.v7.view.ContextThemeWrapper
_。
サポートライブラリの1つには、@RestrictTo(LIBRARY_GROUP)
アノテーションが付けられています。また、_@hide
_もあります。これは、パブリックAPIを意図したものではありません。
最初のものは公開です。