不同活动的Android主题问题

不同活动的Android主题问题,android,android-layout,android-theme,Android,Android Layout,Android Theme,我有一个小应用程序,应该使用系统默认主题。但是我有两个问题: <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.VIBRATE" /> <application android:allowBackup="true"

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

    <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>
首先,在一个活动(TemplateView)上,Android没有应用这个主题——或者说它与应用程序的其他部分真的不同。其次,ConfigurationView上的微调器和按钮也不受主题的影响

    <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>
我不会以编程方式触摸按钮之类的东西。唯一的问题是微调器的ArrayAdapter,它使用andoird.R.layout.simple_微调器_下拉列表_项,如果我没有弄错的话,它也应该以主题为主题

    <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>
我一直在想,这里出了什么问题,但我似乎找不到

    <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>
我的清单

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

配置视图(主题通常不包括按钮/微调器)

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

模板视图(主题完全不同-我不知道为什么)

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


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

问题是,我使用getContext()方法膨胀第一个视图和getApplicationContext()插入另一个视图。

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

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

在AppCompat v22上遇到类似的问题

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

这些活动必须扩展AppCompat活动(而不是活动),才能应用到AppCompat主题(在我的案例中为材料)。

与AppCompat v22相关的问题类似

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

这些活动必须扩展AppCompat活动(而不是活动)才能应用到AppCompat主题(在我的案例中是材质)。

您是否尝试更改清单中的主题?是的,我尝试了默认(@android:style/theme)和它的浅/黑变体-尽管外观发生了变化,这两个问题都没有改变。这可能是因为:de.isogon.discotalker.viewst这只是一个包装器(扩展了RelativeLayout),它添加了一些简单的setText()、onClick()等接口-没有任何东西会改变元素本身的外观。所以我认为它应该是主题化的。试着改变res->values:Base应用程序主题,这取决于API级别。此主题由更新设备上res/values vXX/styles.xml中的AppBaseTheme替换。您是否尝试过更改清单中的主题?是的,我尝试过默认(@android:style/Theme)和它的浅/黑变体-虽然外观发生了更改,但这两个问题都没有改变。这可能是因为:de.isogon.discotalker.viewst这只是一个包装器(扩展了RelativeLayout),它添加了一些简单的setText(),onClick()接口-不改变元素本身的外观。所以我认为它应该是主题化的。试着改变res->values:Base应用程序主题,这取决于API级别。此主题由更新设备上res/values vXX/styles.xml中的AppBaseTheme替换。
    <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>