我正在制作一个对话框,我想在其中显示编辑文本和单选按钮。
但主题并不适用。根据布局检查器的说法,视图应用了正确的主题(显示为"强制"(,但有"android:style/Theme.DeviceDefault((",它也是"强制"的(它显示在我的样式上方,如果这很重要(。
问题是,视图在不同的 API 上看起来不同,我猜这是由该设备默认引起的。我没有在任何地方设置任何关于DeviceDefault的内容,但它适用于我的所有对话框。
知道如何驳回它吗?谢谢。
关于Theme.DeviceDefaulin Android:
有许多主题可用于安卓设备。
- 主题:最早版本的 Android 默认为 2.3 姜饼(10(
- 主题全息:来自安卓3.0蜂窝 (11(
- 主题材料: 来自安卓 5.0 棒棒糖 (21(
- Theme.DeviceDefault:来自Android 4.0冰淇淋三明治(14(,一个可以由设备制造商自定义的主题。它表示设备的本机外观。
指定不同的主题:
Android的资源覆盖系统允许根据设备API级别指定样式,通过Android Studio将为您设置。
例如,res/values-v11 和 res/values-v21中样式的不同版本。
/res/values/styles.xml应用于每个设备并用作基础:
<resources>
<style name="AppTheme" parent="android:Theme.Light"/>
</resources>
/res/values-v11/styles.xml加载到具有 API 级别 11 及以上(包括 21 及以上(的所有设备上:
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light"/>
</resources>
/res/values-v21/styles.xml加载到具有 API 级别 21 及以上版本的所有设备上:
<resources>
<style name="AppTheme" parent="android:Theme.Material.Light"/>
</resources>
AndroidManifest.xml是使用自定义主题的地方。
<application
android:theme="@style/AppTheme"
...
每个 API 级别都有自己的默认主题,由于您对应用使用默认主题,Android 会根据 API 级别调整主题,这在每个设备上会有所不同。请记住,只有添加样式属性以获取指定样式属性的元素。子对象或子视图不获取样式属性。如果希望子视图继承样式,请改为使用android:theme
属性应用样式。
这个问题与你在哪里以及如何应用自己的主题有关。 您应该在AndroidManifest.xml
文件中应用主题。如果在application tag
或activity tag
中应用主题,则可以使用主题覆盖应用程序的不同部分。在没有任何代码的情况下,很难说你做了什么。
应将主题应用于文件的以下部分之一。
覆盖整个应用程序
<manifest ... >
<application android:theme="@style/Theme.AppCompat" ... >
</application>
</manifest>
仅涵盖一项活动
<manifest ... >
<application ... >
<activity android:theme="@style/Theme.AppCompat.Light" ... >
</activity>
</application>
</manifest>
如果视图仅支持您在创建的样式中声明的某些属性,则它仅应用这些属性,而忽略它不支持的属性。
如果要更改默认样式和颜色,可以在styles.xml
文件中覆盖它们。搜索表示颜色值的项目名称,并在res/values/colors.xml
文件中更改相应的值。
我希望这些信息能解决您的问题,但正如我所说,如果没有代码存在,这真的很难说。