как создать собственную тему и использовать ее в приложении для Android - PullRequest
15 голосов
/ 21 сентября 2010

Как создать собственную тему и использовать ее в коде?в меню как реализовать тему и подать заявку на занятие?

есть идеи?

Ответы [ 3 ]

13 голосов
/ 15 сентября 2014

На сайте разработчиков Android есть замечательное руководство по стилям и темам .По сути, вам нужно

  1. Определить стиль (или наследовать встроенный).Чтобы определить стиль

, сохраните файл XML в каталоге res/values/ вашего проекта.Имя файла XML является произвольным, но оно должно использовать расширение .xml и быть сохранено в папке res/values/.

Корневой узел файла 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, чтобы легче было распознать, для чего используются эти стили.

Примените определенный стиль к деятельности или представлению, которое вы хотите стилизовать.Вы можете

  • установить тему «Активность / Приложение» в файле манифеста:

<activity android:theme="@style/Theme.MyGreenTheme"/>

  • или установить ее динамически - используйтесоответствующий установщик класса Activity - setTheme () .
3 голосов
/ 19 августа 2014

Этот является идеальным сайтом, который создает все необходимые файлы, необходимые для создания пользовательского интерфейса. Я использовал его лично пару недель назад, и он отлично работал для меня.

Я не имею отношения к этому сайту, но нашел его очень интересным. Надеюсь, это поможет вам:)

0 голосов
/ 23 января 2019

Создание пользовательских просмотров:

открытый класс 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...