简体   繁体   中英

Issue with Android Themes on different Activities

I've got a little App, that should make use of the Systems default theme. However I've got two problems with that:

First thing is, on one Activity (TemplateView) Android does not apply the theme - or its really different from the rest of the app. Second, spinners an buttons on the ConfigurationView are not affected by the theme either.

I do not programmatically touch buttons and stuff. The only thing is the ArrayAdapter of the spinners, which use the andoird.R.layout.simple_spinner_dropdown_item, which should also be themed if I'm not mistaken.

I've been trying to figure out, what is wrong here, but I can't seem to find it.

My Manifest

    <uses-sdk android:minSdkVersion="10"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme" >
        <activity
            android:name="de.isogon.discotalker.viewController.ConfigurationController" android:theme="@android:style/Theme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity><activity android:name="de.isogon.discotalker.viewController.TemplateController"></activity>
        <activity android:name="de.isogon.discotalker.viewController.AboutController"></activity>
        <activity android:name="de.isogon.discotalker.viewController.DisplayController"></activity>

    </application>

</manifest>

ConfigurationView (Themes normally except for the Buttons/Spinners)

<de.isogon.discotalker.views.ConfigurationView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/tv_configHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/label_configuration"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <AutoCompleteTextView
        android:id="@+id/actv_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tv_configHeader"
        android:layout_marginTop="10dp"
        android:completionThreshold="1"
        android:dropDownHeight="wrap_content"
        android:dropDownWidth="match_parent"
        android:ems="10"
        android:hint="@string/hint_text" >
    </AutoCompleteTextView>

    <ScrollView
        android:id="@+id/scrollView_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/btn_start"
        android:layout_below="@+id/actv_text" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <!-- Speed -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_speed"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_speed" />

                <SeekBar
                    android:id="@+id/sb_speed"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>

            <!-- Size -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_size"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_size" />

                <SeekBar
                    android:id="@+id/sb_size"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>

            <!-- Text Color -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_textColor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_textcolor" />

                <Spinner
                    android:id="@+id/sp_textcolor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>

            <!-- Text Backgroundcolor -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_textBackgroundColor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_textbackgroundcolor" />

                <Spinner
                    android:id="@+id/sp_textBackgroundcolor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>

            <!-- Backgroundcolor -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_backgroundcolor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_backgroundcolor" />

                <Spinner
                    android:id="@+id/sp_backgroundcolor"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>

            <!-- Endless -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_endless"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_endless" />

                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" >

                    <CheckBox
                        android:id="@+id/cb_endless"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_gravity="right|center_vertical" />
                </RelativeLayout>
            </LinearLayout>

            <!-- Vibrate/Sound -->

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_afterRun"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:layout_weight="1"
                    android:text="@string/label_afterRun" />

                <Spinner
                    android:id="@+id/sp_afterRun"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:layout_weight="1" />
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

    <Button
        android:id="@+id/btn_start"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:text="@string/button_start" />

</de.isogon.discotalker.views.ConfigurationView>

TemplateView (Theme completly different - I've no clue why)

<de.isogon.discotalker.views.TemplateView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/tv_templatesHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="10dp"
        android:text="@string/label_templates"
        android:textAppearance="?android:attr/textAppearanceLarge"
         />

    <ListView 
        android:id="@+id/lv_templateList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_templatesHeader"
        android:layout_above="@+id/rl_containerButtons">

    </ListView>

    <LinearLayout 
        android:id="@+id/rl_containerButtons"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <Button 
            android:id="@+id/btn_edit"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/button_edit"
            android:layout_weight="1"/>
        <Button 
            android:id="@+id/btn_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/button_delete"
            android:layout_weight="1"/>
    </LinearLayout>
</de.isogon.discotalker.views.TemplateView>

问题是,我使用getContext()方法为第一个视图充气,并使用getApplicationContext()为另一个视图充气。

使用ArrayAdapter扩展进行ListView时,我遇到了类似的问题-解决方法是使用MyActivity.this上下文,而不是getApplicationContext()或getContext()方法。

Had a similar problem related to AppCompat v22.

The activities must extend the AppCompatActivity (instead of Activity) for the AppCompat theme (Material in my case) to be applied to them.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM