2011-01-19 3 views
7

Я хочу изменить стиль кнопки динамически, то есть в Java коде, что-то вроде:Как я могу изменить стиль кнопки динамически в Android?

((Button)findViewById(id)).setStyle("@styles/foo") 

<resources> 
    <style name="foo"> 
     <item name="android:adjustViewBounds">true</item> 
     <item name="android:maxHeight">100px</item> 
     <item name="android:maxWidth">200px</item> 
    </style> 
</resources> 

Я никогда не видел ничего подобного SetStyle, так:

я должен изменить каждое свойство или я могу изменить весь стиль?

ответ

0

Вы также можете захотеть взглянуть на 9 накладных изображениях. Они очень полезны для настройки размера и текста изображения, привязанного к вашему виджету или кнопке, на основе текущего устройства, на котором работает ваше приложение.

9 patch

9 patch draw tool

+0

Я знал об этом, но спасибо вам большое. Пример стиля, который я дал, не является хорошим примером, потому что это не тот, который я хочу применить к кнопке, это просто изобретенный стиль. Я хочу изменить такие вещи, как тени, цвет текста/размер и т. Д. – DarthRoman

11

Чтобы назначить стиль, как этот

<style name="ButtonHOLO" parent="android:Widget.Button"> 
     <item name="android:background">@drawable/btn_default_holo_dark</item> 
     <item name="android:minHeight">@dimen/calc_btn_h</item> 
     <item name="android:minWidth">@dimen/calc_btn_w</item> 
     <item name="android:textColor">#ffffff</item> 
</style> 

к кнопке динамически вам нужно использовать как setBackgroundResource() и setTextAppearance() функции. Например .:

btn.setBackgroundResource(R.drawable.btn_default_holo_dark); 
btn.setTextAppearance(context, R.style.ButtonHOLO); 

где

btn_default_holo_dark

это имя XML-файла, который описывает селектор для вашей кнопки.

+0

это должен быть принятый ответ !!! –

1

Самый простой способ, который я нашел, чтобы обойти этот очевидный недостаток, - это сделать кнопки. Сделайте один из них Visibility.gone. Затем просто измените Visibility с другого на gone и активируйте первый по Visibility.visible.

Мне не очень нравится это решение, но оно быстрее и безопаснее, чем альтернативы, которые я нашел до сих пор.

Смежные вопросы