Leer atributos de temas más nuevos en plataformas más antiguas

stoy tratando de leer valores de atributos de temas y estilos diseñados para plataformas que son más nuevas de lo que estoy ejecutando mi aplicación.

Por favor, no preguntes por qué. Si sabe algo sobre las bibliotecas que escribo, entonces ya debería saber que me gusta impulsar las capacidades de la plataforma:)

Estoy operando bajo la presunción de que cuando se compilan los estilos de Android, las constantes de atributo son las que se usan para las teclas y, por lo tanto, en teoría deberían poder leerse en cualquier plataforma de alguna manera. Esto es lo que he observado que ocurre con los XML de diseño en mis otras bibliotecas sin problemas.

Aquí hay un caso de prueba base que muestra el problema. Esto debe compilarse con Android 3.0 +.

<resources>
    <style name="Theme.BreakMe">
        <item name="android:actionBarStyle">@style/Widget.BreakMe</item>
    </style>
    <style name="Widget.BreakMe" parent="android:Widget">
        <item name="android:padding">20dp</item>
    </style>
</resources>

El hecho de que esto usaandroid:actionBarStyle específicamente es irrelevante. Todo lo que debe entenderse es que es un atributo que solo estaba disponible a partir de Android 3.0.

Aquí están la forma en que he intentado acceder a estos valores hasta ahora en las plataformas anterior a Android 3.0.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Break Me"
    style="?android:attr/actionBarStyle"
    />

<declare-styleable name="Whatever">
    <item name="datStyle" format="reference" />
</declare-styleable>

<style name="Theme.BreakMe.Take2">
    <item name="datStyle">?android:attr/actionBarSize</item>
</style>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Break Me"
    style="?attr/datStyle"
    />

TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarStyle, outValue, true);

int[] Theme = new int[] { android.R.attr.actionBarSize };
int Theme_actionBarSize = 0;
TypedArray a = context.obtainStyledAttributes(attrs, Theme);
int ref = a.getResourceId(Theme_actionBarSize, 0);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActionBar, android.R.attr.actionBarStyle, 0);

Todos ellos producen este error en LogCat:

E/ResourceType(5618): Style contains key with bad entry: 0x010102ce

Los0x010102ce constante es el valor del atributo deandroid.R.attr.actionBarStyle, lo que parece indicar que la plataforma está rechazando el atributo antes de que pueda tener la oportunidad de acceder a su valor.

Estoy buscando cualquier otra forma de leer atributos como este desde el tema. Estoy bastante seguro de que una vez que obtenga la referencia de estilo no tendré problemas para leer sus atributos.

¿Hay alguna forma posible de hacer esto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta