java - 如何获得默认布局以根据设备分辨率使用不同的样式表?
问题描述
所以我正在处理的这个应用程序中有大量的活动,对于每个活动,有 5 个布局(默认,sw650dp,sw730dp,sw800dp,sw800dp-h1050dp),每个布局都有自己的属性和使用样式分配的值.xml 文件。
我想要做的是让每个活动都使用一个默认布局,并根据设备的分辨率加载正确的 styles.xml。
示例:活动“activity_user”具有默认布局,为文本和按钮等元素分配样式(@style/textStyle 和@style/buttonStyle)。在@res/values/styles 目录下,有5 个styles.xml 文件,都是不同分辨率的,它们都有一个名为“textStyle”和“buttonStyle”的样式。如果应用程序在 sw800dp 的设备上运行,则从 sw800dp 版本的 styles.xml 文件中提取“textStyle”和“buttonStyle”样式。
示例图片:
由于Android知道根据设备的分辨率选择哪个布局,我假设为每个分辨率添加一个styles.xml,然后删除相关分辨率的布局,只要样式的名称在所有styles.xml文件中都是相同的. 但是,它似乎只采用默认样式.xml 的任何命名样式,并且所有其他分辨率都被忽略。
示例:默认布局为某些文本分配“BodyButtonStyle”样式 (@style/BodyButtonStyle)。在默认的 styles.xml 中,文本是白色的,但在 sw800dp 版本中,文本是橙色的。但是,当我在 sw800dp 设备上加载应用程序时,文本是白色的。
默认的 styles.xml 和 sw800dp styles.xml 都有这样声明的样式 -
默认:
<style name="BodyButtonStyle">
<item name="android:layout_width">280dp</item>
<item name="android:layout_height">50dp</item>
<item name="android:fontFamily">@font/someFont</item>
<item name="android:textAllCaps">false</item>
<item name="android:textAlignment">center</item>
<item name="android:textColor">@color/colorWhite</item>
<item name="android:textSize">25sp</item>
<item name="android:background">@drawable/rectangle_shape_button</item>
<item name="android:layout_gravity">center</item>
</style>
sw800dp:
<style name="BodyButtonStyle">
<item name="android:layout_width">400dp</item>
<item name="android:layout_height">80dp</item>
<item name="android:fontFamily">@font/someFont</item>
<item name="android:textAllCaps">false</item>
<item name="android:textAlignment">center</item>
<item name="android:textColor">@color/colorPink</item>
<item name="android:textSize">45sp</item>
<item name="android:background">@drawable/rectangle_shape_button</item>
<item name="android:layout_gravity">center</item>
<item name="layout_constraintBottom_toTopOf">@+id/guideline_bottom</item>
<item name="layout_constraintEnd_toEndOf">parent</item>
<item name="layout_constraintHorizontal_bias">0.5</item>
<item name="layout_constraintStart_toStartOf">parent</item>
</style>
我如何获得默认布局以根据分辨率加载正确的 styles.xml 文件,因为当布局有多个分辨率时它似乎会自动执行?
解决方案
推荐阅读
- algorithm - 在合并排序中,为什么不将每个排序的子列表合并到滚动列表中?
- python - Python - 通过变量解析所需数据
- video - 如何将 ffmpeg 与 vidstab 和 filter_complex 一起使用
- java - Java 关闭盒子
- python - 从 Python 中的许多目录中删除一组字符串
- html - 响应式 - 所有元素在移动设备上都太小了
- node.js - 我正在尝试将 Node.js 应用程序部署到 Google Cloud Platform,但发现 MongoDB 出现错误
- python-3.x - 计算每个字符串的出现次数并使用python并排打印eac编号和字符串
- r - 在 R 中,如何根据范围进行分组?
- javascript - Angular:通过登录页面进行 E2E 测试