¿Por qué ContextThemeWrapper está ahora restringido al grupo Support Library?

Empecé a usar un ContextThemeWrapper para aplicar un estilo dinámicamente a un ImageButton ; Basado en una respuesta a otra pregunta mía, y respuestas a otras preguntas similares .

 ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes); mImageButton = new AppCompatImageButton(wrapper, null, 0); 

Recientemente, un error de pelusa comenzó a aparecer en el constructor ContextThemeWrapper declarando:

ContextThemeWrapper sólo se puede llamar desde el mismo grupo de la biblioteca (groupId = com.android.support)

Me di cuenta de que la clase marcada con la @RestrictTo(LIBRARY_GROUP) , que está haciendo que aparezca el error de pelusa. Pero no encuentro ninguna información sobre por qué está restringido al grupo de bibliotecas com.android.support .

Por lo que puedo decir, esta es la única manera de aplicar una superposición de estilo, tema o tema a una View programación; Aparte de establecer un atributo de estilo predeterminado como el tercer argumento en el constructor. Así que me pregunto por qué su uso sería restringido en absoluto; ¿Hay algún problema con el uso de la clase fuera de las bibliotecas de soporte? ¿Podría haber efectos secundarios que no conozco?


La única pregunta similar que he encontrado es una sobre un error (ahora fijo); Que causó que este error de pelusa se mostrara en el método onCreate de una subclase de AppCompatActivity . No creo que esta ocurrencia sea un error, sino una restricción deliberada; Que me gustaría saber el razonamiento detrás.

Debo notar; Esta restricción (a partir de ahora) en realidad parece no tener ningún efecto en el código utilizando un ContextThemeWrapper . Se compila y funciona bien, y funciona como yo lo esperaría.

android.view.ContextThemeWrapper ! = android.support.v7.view.ContextThemeWrapper .

La biblioteca de soporte está anotada @RestrictTo(LIBRARY_GROUP) , y también @hide – no pretende ser una API pública.

La primera es pública.

  • NavigationView setNavigationItemSelectedListener esta API está marcada como interna a la biblioteca de soporte y no se debe tener acceso desde las aplicaciones
  • Error de tema de diseño de material
  • No se puede convertir en LayerDrawable (después de actualizar v7)
  • Error: java.lang.NullPointerException en android.support.v4.content.Loader
  • Aidl.exe Error al crear directorios: argumento no válido
  • Cómo crear la biblioteca de soporte v4 desde el origen
  • ViewPager.setOffscreenPageLimit (0) no funciona como se esperaba
  • Utilice Android Support Annotations como @StringRes, @LayoutRes, @DrawableRes para arreglos de enteros
  • ¿Cómo puedo evitar métodos obsoletos y mantener la compatibilidad hacia atrás?
  • Nullpointer al utilizar el adaptador personalizado en el menú de la lista de la barra de acciones (con el compat-v7)
  • Reemplazar el soporte obsoleto android.support.v4.app.ActionBarDrawerToggle con soporte.v7 causa que el cajón no funcione en Jelly Bean
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.