Вот XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LightStyle"
android:layout_width="fill_parent"
android:layout_height="55dip"
android:clickable="true"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" />
</RelativeLayout>
Как установить style
атрибут программно?
Ответы:
Технически вы можете применять стили программно, в любом случае с пользовательскими представлениями:
Конструктор с одним аргументом используется при создании экземпляров представлений программным способом.
Так что цепочка этого конструктора супер, который принимает параметр стиля.
Или, как @Dori указал просто:
источник
http://developer.android.com/reference/android/widget/LinearLayout.html#LinearLayout(android.content.Context, android.util.AttributeSet, int)
. С LinearLayout требуется уровень 11+.AttributeSet
?Button
. Подход @ Бенджамина Пиетта работает отлично.Что сработало для меня:
И
источник
Обновление : во время ответа на этот вопрос (середина 2012 года, уровень API 14-15), программная настройка представления не была возможной (даже если были некоторые нетривиальные обходные пути), хотя это стало возможным после более позднего API релизы. Смотрите ответ @ Blundell для деталей.
СТАРЫЙ ответ:
Вы не можете установить стиль представления программно, но вы можете найти эту тему полезной.
источник
textView.setTextAppearance(context, R.style.mystyle);
. Согласно документу «Устанавливает цвет текста, размер, стиль, цвет подсказки и цвет выделения из указанного ресурса TextAppearance.» developer.android.com/reference/android/widget/… , int)Для новой кнопки / TextView:
Для существующего экземпляра:
Для изображения или макетов:
источник
Если вы хотите продолжить использовать XML (что не позволяет сделать принятый ответ) и установить стиль после создания представления, вы можете использовать парижскую библиотеку, которая поддерживает подмножество всех доступных атрибутов.
Поскольку вы надуваете свое представление из XML, вам нужно указать идентификатор в макете:
Затем, когда вам нужно изменить стиль программно, после того, как макет был раздут:
Более того: список поддерживаемых типов и атрибутов вида (включает фон, отступы, поля и т. Д. И может быть легко расширен) и инструкции по установке с дополнительной документацией .
Отказ от ответственности: я первый автор указанной библиотеки.
источник
Вы можете применить стиль к своей деятельности, выполнив:
или Android по умолчанию:
в вашей деятельности, до
setContentView()
.источник
Ни один из приведенных ответов не является правильным.
Вы можете установить стиль программно.
Краткий ответ: посмотрите на http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/content/Context.java#435
Длинный ответ Вот мой фрагмент, чтобы программно установить пользовательский стиль на ваш взгляд:
1) Создайте стиль в вашем файле styles.xml
Не забудьте указать свои пользовательские атрибуты в файле attrs.xml
Мой файл attrsl.xml:
Обратите внимание, что вы можете использовать любое имя для вашего стиля (мой CustomWidget)
Теперь давайте установим стиль для виджета программно. Вот мой простой виджет:
расположение:
И, наконец, реализация класса StyleLoader
Вы можете найти полностью рабочий пример на https://github.com/Defuera/SetStylableProgramatics
источник
apply
методе, который не делает ничего интересного. Истинное значение стиля заключается в том, что он автоматически применяет некоторый визуальный стиль ко всем будущим динамически добавляемым представлениям. Этот код здесь, конечно, не может этого сделать, и здесь нет ничего динамического, нам нужно знать, какие представления и какие свойства / поля устанавливать.Это довольно старый вопрос, но решение, которое сработало для меня сейчас, заключается в использовании 4-го параметра конструктора
defStyleRes
- если доступно .. на виду ... для установки стиляСледующие работы для моих целей (kotlin):
источник
Это мой простой пример, ключом является
ContextThemeWrapper
обертка, без нее мой стиль не работает, и используется конструктор с тремя параметрами View.источник
простой путь проходит через конструктор
источник
Я не предлагаю использовать ContextThemeWrapper, поскольку это делает это:
Что может привести к нежелательным результатам в вашем приложении. Вместо этого я предлагаю новую библиотеку «Париж» для этого от инженеров Airbnb:
https://github.com/airbnb/paris
Но после некоторого времени использования я обнаружил, что он на самом деле довольно ограничен, и я перестал его использовать, потому что он не поддерживает много свойств, которые мне нужны, из коробки, поэтому нужно проверить и решить как всегда.
источник
Я использовал представления, определенные в XML, в моей составной ViewGroup, надул их и добавил в Viewgroup. Таким образом, я не могу динамически менять стиль, но могу сделать некоторые настройки стиля. Мой композит:
}
и мой взгляд в XML, где я могу назначить стили:
источник
Вы можете создать XML-файл, содержащий макет с желаемым стилем, а затем изменить фоновый ресурс вашего представления, например, так .
источник