eia os atributos mais recentes do tema na plataforma anteri

stou tentando ler valores de atributos de temas e estilos projetados para plataformas mais novas do que as que estou executando no meu aplicativ

Por favor, não pergunte o porquê. Se você conhece alguma coisa sobre as bibliotecas que escrevo, já deve saber que eu gosto de aprimorar os recursos da plataforma:)

Estou operando sob a suposição de que, quando os estilos do Android são compilados, as constantes de atributo são o que é usado para as chaves e, portanto, teoricamente deve ser capaz de ser lido em qualquer plataforma de alguma forma. É o que observei estar acontecendo com XMLs de layout em minhas outras bibliotecas sem problemas.

Aqui está um caso de teste básico que mostra o problema. Isso deve ser compilado usando o 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>

O fato de que isso usaandroid:actionBarStyle especificamente é irrelevante. Tudo o que deve ser entendido é que é um atributo que estava disponível apenas a partir do Android 3.

Aqui está a maneira que eu tentei acessar esses valores até agora nas plataformas anterior ao 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 resultam neste erro no LogCat:

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

O0x010102ce constant é o valor do atributo deandroid.R.attr.actionBarStyle, o que parece indicar que a plataforma está rejeitando o atributo antes que eu possa ter a chance de acessar seu valo

Estou procurando qualquer outra maneira de ler atributos como este no Tema. Tenho certeza de que, depois de obter a referência de estilo, não terei problemas para ler seus atributo

Existe alguma maneira possível de fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion