Как создать собственную тему и использовать ее в приложении для Android?
Как создать собственные темы и использовать их в коде?
В меню как реализовать опцию темы и подать заявку на занятие?
Ответы
Ответ 1
Там есть хороший Руководство по стилям и темам на сайте разработчиков Android. В основном вам нужно сделать
сохранить XML файл в каталоге res/values/
вашего проекта. имя файла XML произвольно, но оно должно использовать расширение .xml
и сохраняться в папке res/values/
.
Корневой файл node файла XML должен быть <resources>
.
Для каждого стиля, который вы хотите создать, добавьте элемент в файл с именем, которое однозначно идентифицирует стиль (этот атрибут требуется).
то есть.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.MyGreenTheme" parent="Theme.Light">
<item name="android:windowBackground">#11aa22</item>
</style>
</resources>
Полезно назвать файл ресурсов themes.xml
, чтобы было легче распознать, для чего используются эти стили.
-
Apply определенный стиль для активности или представления, которое вы хотите
стилизованы. Вы можете либо
- задайте тему Activity/Application в файле манифеста:
<activity android:theme="@style/Theme.MyGreenTheme"/>
- или установите его динамически - используйте соответствующий установщик класса Activity - setTheme().
Ответ 2
Это - идеальный сайт, который создает все необходимые файлы, необходимые для создания пользовательского интерфейса. Я использовал его лично пару недель назад, и он отлично поработал у меня.
У меня нет связи с этим сайтом, но это очень интересно.
Надеюсь, это может вам помочь:)
Ответ 3
Создать пользовательские представления:
открытый класс CustomTextView расширяет AppCompatTextView {
public CustomTextView(Context context) {
super(context);
setCommonChanges(DefaultTheme.getInstance().textColor, true, context);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setDefaultValues(context, attrs);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setDefaultValues(context, attrs);
}
private void setDefaultValues(Context context, AttributeSet attrs) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
final int N = a.getIndexCount();
int color = DefaultTheme.getInstance().textColor;
boolean isCustomFont = a.getBoolean(R.styleable.CustomTextView_isCustomFont, true);
for (int i = 0; i < N; ++i) {
int colorIndex = a.getInteger(R.styleable.CustomTextView_tvBackground, 2);
switch (colorIndex) {
case 1:
color = DefaultTheme.getInstance().headingTextColor;
break;
case 2:
color = DefaultTheme.getInstance().textColor;
break;
case 3:
color = DefaultTheme.getInstance().textHintColor;
break;
case 4:
color = DesignUtils.getColorIdFromHexCode("#FFFFFF");
break;
case 5:
color = DefaultTheme.getInstance().iconColor;
break;
case 6:
color = DefaultTheme.getInstance().menuHeaderTextColor;
break;
case 7:
color = DefaultTheme.getInstance().menuTextColor;
break;
case 8:
color = DefaultTheme.getInstance().keyboardtextcolor;
break;
case 9:
color = DesignUtils.getColorIdFromHexCode("#BEBEBE");
break;
}
}
a.recycle();
setCommonChanges(color, isCustomFont, context);
}
private void setCommonChanges(int color, boolean isCustomFont, Context context) {
if (isCustomFont) {
Typeface typeface = DefaultTheme.getInstance().getTVFont(context);
setTypeface(typeface, getTypeface().getStyle());
}
setTextColor(color);
}
public void updateTypeFace(int style){
Typeface typeface = DefaultTheme.getInstance().getTVFont(getContext());
setTypeface(typeface, style);
}