/ / Android - use atributos para ajustar estilos personalizados - android, atributos, estilos, temas

Android - use atributos para ajustar estilos personalizados - android, atributos, estilos, temas

Aqui está o meu problema. Eu defini temas e estilos personalizados, de modo a personalizar vários modos de exibição, nos arquivos .xml relevantes. Aqui estão algumas extrações de código:

themes.xml:

...
<style name="Legacy" parent="android:Theme.NoTitleBar">
<item name="android:buttonStyle">@style/Legacy.Button</item>
...
</style>

styles.xml:

...
<style name="Legacy.Button" parent="@android:style/Widget.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">15dp</item>
</style>

Vamos dizer que eu defini o tema do meu aplicativo para Legacy. Se eu usar um Button em um layout, ele receberá meus parâmetros padrão personalizados (texto branco, background é @ drawable / button_selector_blue, etc).

Agora, digamos que eu queira manter esses parâmetros, exceto pelo tamanho do texto: Eu gostaria de ter alguns botões com um tamanho de texto maior, que seriam definidos em um atributo titleSize em attrs.xml:

...
<attr name="titleSize" format="reference|dimension" />

e qual valor é definido para cada tema no meu arquivo themes.xml.

Então, meu layout conteria algo como:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="?titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Ao iniciar meu aplicativo, recebo o seguinte erro: java.lang.UnsupportedOperationException: não é possível converter para dimensão: tipo = 0 x 2

Então parece que não posso ajustar estilos personalizados usando atributos - pelo menos não dessa maneira. É possível uma coisa dessas ? Se não, o que você usaria para alcançar tal resultado?

Eu gostaria de dar ao usuário a capacidade de selecionar entre diferentes temas, então eu não posso simplesmente definir um estilo ButtonWithLargeText adicional e usá-lo diretamente no meu layout.

Obrigado pela ajuda !

Respostas:

0 para resposta № 1

Eu finalmente consegui que isso funcione. Em vez de definir os meus títulos "size em attrs.xml, usei dimens.xml. Agora os seguintes trabalhos:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="@dimen/titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Enquanto eu recebo o meu tamanho de texto regular (que eu defini no meu styles.xml) no botão usando isso:

<Button
android:id="@+id/idRegularButton"
android:text="@string/regularSizeText"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>