1

here's my issue. I have defined custom themes and styles, so as to customize various Views, in the relevant .xml files. Here are some code extracts:

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>

Let's say I set my application's theme to Legacy. If I use a Button in a layout, it will get my custom default parameters (white text, background is @drawable/button_selector_blue, etc).

Now let's say I want to keep those parameters save for the text size: I'd like to have some buttons with a larger text size, which would be defined in an titleSize attribute in attrs.xml:

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

and which value is set for each theme in my themes.xml file.

So my layout would contain something like:

<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>

When launching my app I get the following error: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x2

So it seems I cannot tweak custom styles using attributes - at least not this way. Is such a thing possible ? If not, what would you use to achieve such a result ?

I'd like to give the user the ability to select among different themes, so I can't just define an additionnal ButtonWithLargeText style and directly use it in my layout.

Thanks for your help !

Anordil
  • 160
  • 8

1 Answers1

0

I finally got it to work. Instead of defining my titles' size in attrs.xml, I used dimens.xml. So now the following works:

<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>

While I get my regular text size (which I defined in my styles.xml) on the Button by using this:

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