любое тело знает, как установить стиль носовой TextView во время выполнения:андроид: установить стиль TextView во время выполнения
что-то вроде этого
myTextView.setStyle(R.style.mystyle);
любое тело знает, как установить стиль носовой TextView во время выполнения:андроид: установить стиль TextView во время выполнения
что-то вроде этого
myTextView.setStyle(R.style.mystyle);
вы должны вручную установить каждый элемент стиля, вы меняетесь, нет способа установить Settyty во время выполнения, AFAIK.
myTextView.setTextAppearance
myTextView.setTextSize
myTextView.setTextColor
Я пытаюсь сделать аналогичную вещь.
Причина в том, что я хочу использовать стиль из своей собственной темы, НО мой макет интерфейса пользователя полностью сгенерирован в коде (с использованием собственного компоновщика компоновки) без определения каких-либо виджетов в XML. Поэтому я не могу установить стиль в XML-макете моего виджета - XML-макета отсутствует.
Я имею в виду, что я смогу установить этот стиль в коде моего виджета с помощью
TypedArray а =
context.obtainStyledAttributes (AttributeSet набор, ИНТ [] AttrS, внутр defStyleAttr , внутр defStyleRes)
Вот, кажется (мне), что
AttributeSet установлено = NULL; потому что это то, что предоставил бы надуватель XML.
int [] attrs = R.styleable.MyWidget; определяет, на какие атрибуты я хочу смотреть.
int defStyleAttr = myWidgetStyle; который является ссылкой, определенной в моей теме, в стиле MyWidget. Они оба определены в файлах XML в res/values. «myWidgetStyle» следует шаблону имени, который разработчики Android использовали в своем коде.
defStyleRes = 0; Я надеюсь, что мне не нужно об этом думать.
Затем, чтобы получить какое-либо свойство, такие как цвет фона,
цвета Цвета = a.getColor (R.styleable.MyWidget_background, R.color.my_default);
a.recycle();
Это похоже на работу - так или иначе.
Кажется, что система сборки android создает правильный индекс для использования в a.getColor и называет его R.styleable.MyWidget_background. Я не сделал это имя сам, поэтому Android, должно быть, сделал это, используя мой XML для моего настраиваемого MyWidget.
Я ожидаю, что вы сможете найти правильный индекс, выполнив поиск в TypedArray для требуемого атрибута, но это будет неэффективно, и TypedArray выглядит как неприятное приспособление для решения проблемы. Я бы использовал очень длинную палку, чтобы тыкать ее!
Дон
я до сих пор не нашел (к сожалению) способ изменить стиль во время выполнения.
Если только об изменении внешнего вида флажок (как вы упоминаете в комментарии другого ответа), вы можете использовать это:
myCheckbox.setButtonDrawable(R.drawable.star_checkbox);
И есть файл star_checkbox.xml в вытяжке каталоге описывающее флажок фона в соответствии с его состояниями, такими как:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_focused="true"
android:drawable="@drawable/star_checkbox_checked_focused" />
<item android:state_checked="false" android:state_focused="true"
android:drawable="@drawable/checkbox_not_checked_focused" />
<item android:state_checked="false"
android:drawable="@drawable/checkbox_not_checked" />
<item android:state_checked="true"
android:drawable="@drawable/checkbox_checked" />
</selector>
Также вам нужны соответствующие файлы png в выпадающем каталоге.
Очень легко использовать только setTextApparence и ваш стиль
myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
есть ли что-то похожее для линейногоLayout? –
Не работает вообще! –
Просто обратите внимание, что 'setTextAppearance (контекст контекста, @StyleRes int resId)' устарел, и мы должны использовать 'setTextAppearance (@StyleRes int resId)' вместо – AllDayAmazing
TextView (контекст Контекст, AttributeSet ATTRS, внутр defStyle)
Хотя есть строительство в наличии, но, кажется, его багги, я попробовал это и нашел указанный стиль не будет применяться к моему представлению.
После поиска в дальнейшем получил эту поданную ошибку: http://code.google.com/p/android/issues/detail?id=12683
Чтобы обойти эту проблему, я использую setBackgroundResource, setTextAppearance и т.д. методы резко :)
спасибо за ваш ответ, но если я хочу, я хочу, чтобы добавить больше чем ярлык звезды. кажется, что есть способ установить стиль во время выполнения. но в моем случае я хочу, чтобы добавить эту звезду флажок как я могу сделать это? –