1

我有一个小应用程序,它应该使用系统默认主题。但是我有两个问题:

第一件事是,在一个 Activity (TemplateView) 上,Android 不应用主题 - 或者它与应用程序的其余部分确实不同。其次,ConfigurationView 上的微调器和按钮也不受主题影响。

我不会以编程方式触摸按钮和东西。唯一的是微调器的 ArrayAdapter,它使用了 andoird.R.layout.simple_spinner_dropdown_item,如果我没记错的话,它也应该是主题。

我一直在试图弄清楚,这里出了什么问题,但我似乎找不到。

我的清单

    <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(主题通常除了按钮/微调器)

<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(主题完全不同 - 我不知道为什么)

<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>
4

3 回答 3

1

问题是,我使用 getContext() 方法膨胀第一个 View 并使用 getApplicationContext() 膨胀另一个 View。

于 2013-06-27T10:11:21.107 回答
0

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

于 2013-09-13T22:41:21.100 回答
0

有一个与 AppCompat v22 相关的类似问题。

活动必须扩展 AppCompatActivity(而不是 Activity),才能将 AppCompat 主题(在我的情况下为材料)应用于它们。

于 2015-07-28T11:51:33.040 回答