Добавить разные стили представлений к теме и изменить ее во время выполнения? - PullRequest
0 голосов
/ 08 октября 2011

Я стилизовал определенные TextViews и другие вещи со стилями. Теперь я хочу реализовать другую тему, которая должна менять цвета, которые определены в styles.xml. Так можно ли добавить все эти стили в тему и изменить ее во время выполнения, возможно, с помощью act.setTheme(themeID);?

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

ListView Layout.xml (выглядит немного хаотично, но атрибуты стиля легко найти.)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

            style="@style/OrangeTheme_ListView_Item"

            android:id="@+id/MainListItemBG" android:padding="10dp"
            android:layout_height="fill_parent"
            android:orientation="vertical" 
            android:layout_width="fill_parent">
    <TextView 
        style="@style/OrangeTheme_ListView_Item_TextHead"

                           android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/MainList_Head" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

    <TableLayout  android:stretchColumns ="*" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/tableLayout1">
        <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">

                <TextView 
                    style="@style/OrangeTheme_ListView_Item_TextBody" 
                                       android:layout_width="fill_parent" android:text="test"       
                                       android:layout_height="fill_parent" android:id="@+id/MainList_Body_Left"></TextView>

                <TextView 
                   style="@style/OrangeTheme_ListView_Item_TextBody" android:layout_width="fill_parent" android:text="test"  android:layout_height="fill_parent" android:id="@+id/MainList_Body_Right"></TextView>

            </TableRow>



    </TableLayout>

</LinearLayout>

Часть моего styles.xml

    <style name="OrangeTheme_ListView">
        <item name="android:background">#FFFFFF</item>
    <item name="android:layout_marginRight">5dp</item>
        <item name="android:layout_marginLeft">5dp</item>
    <item name="android:divider">#FFFFFF</item>
        <item name="android:dividerHeight">5dp</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:cacheColorHint">#00000000</item>          
    </style>


    <style name="OrangeTheme_ListView_Item">
          <item name="android:background">@drawable/orange_theme_lv_bg</item>
          <item name="android:textColor">#000000</item>
          <item name="android:layout_marginRight">10dp</item>
          <item name="android:layout_marginLeft">10dp</item>
          <item name="android:layout_marginBottom">10dp</item>
          <item name="android:layout_marginTop">10dp</item>
    </style>

    <style name="OrangeTheme_ListView_Item_TextHead">
        <item name="android:textColor">#000000</item>
    </style>   

    <style name="OrangeTheme_ListView_Item_TextBody">
        <item name="android:textColor">#000000</item>
        <item name="android:textSize">12sp</item>
    </style>

1 Ответ

0 голосов
/ 08 октября 2011

К сожалению, вы не можете менять стили во время выполнения. Здесь это объяснение, почему. Что вы можете сделать, так это создать различные макеты и загрузить их в соответствии с ситуацией, в которой находится ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...