【发布时间】:2013-10-16 16:33:43
【问题描述】:
我在跨多个屏幕缩放 Android 时遇到问题。根据文档,Android OS 将假定您的 dimens.xml 是为 mdpi 创建的,并为 hdpi、xhdpi 等进行相应缩放...
但是,我无法看到这项工作。如果我有一个用于 values-hdpi 的文件夹,我的 SGS4 看起来很好,从位于 values-hdpi 中的 dimens.xml 文件应用了 1.5 比例。但是,每当我从项目中删除 values-hdpi 文件夹以允许 Android 操作系统将其扩展到 hdpi 时,SGS4 只会运行 mdpi 值。我不确定我做错了什么。
Android 清单:
<!-- Screen Support -->
<supports-screens android:resizeable="true"
android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15"/>
文件夹结构包括 价值观 价值观 价值观 值-sw600dp
values 具有存储在dimens.xml 文件中的mdpi 值,所有这些都在dp 和sp 中完成。 尺寸.xml:
(注意*)每当我尝试从 dimens.xml 添加 xml sn-p 时,它都会对其进行有趣的格式化并删除所有 dimen name= 东西,并且只列出其中使用的 dp 和 sp。不知道为什么。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="center_text_margin_right">20dp</dimen>
<dimen name="answer_row_top_padding">7dp</dimen>
<dimen name="answer_row_bottom_padding">7dp</dimen>
<dimen name="answer_number_text_size">12sp</dimen>
<dimen name="answer_left_margin_from_answer_number">18dp</dimen>
<dimen name="answer_text_size">12sp</dimen>
<dimen name="answer_points_right_margin">20dp</dimen>
<dimen name="answer_points_left_margin">18dp</dimen>
<dimen name="answer_number_left_margin">60dp</dimen>
<dimen name="center_text_size">12sp</dimen>
<dimen name="center_text_margin_left">20dp</dimen>
<dimen name="center_text_margin_right">20dp</dimen>
<dimen name="answer_title_height">28dp</dimen>
<dimen name="round_circle_margin_left">6dp</dimen>
<dimen name="round_circle_height">6dp</dimen>
<dimen name="round_circle_width">6dp</dimen>
<dimen name="total_score_right_margin">26dp</dimen>
<dimen name="total_score_left_margin">5dp</dimen>
<dimen name="score_text_size">12sp</dimen>
<dimen name="trivia_logo_height">25dp</dimen>
<dimen name="trivia_logo_width">84dp</dimen>
<dimen name="trivia_logo_margin_left">8dp</dimen>
<dimen name="question_margin_left">26dp</dimen>
<dimen name="question_margin_right">26dp</dimen>
<dimen name="question_top_margin">15dp</dimen>
<dimen name="question_margin_bottom">20dp</dimen>
<dimen name="question_text_size">12sp</dimen>
<dimen name="fun_fact_margin_bottom">100dp</dimen>
<dimen name="fun_fact_text_size">12dp</dimen>
<dimen name="answer_row_height">25dp</dimen>
</resources>
如果我用这个文件创建一个 values-hdpi 文件夹 尺寸.xml
30.00dp 10.50dp 10.50dp 18.00dp 27.00dp 18.00dp 30.00dp 27.00dp 90.00dp 18.00dp 30.00dp 30.00dp 42.00dp 9.00dp 9.00dp 9.00dp 39.00dp 7.50dp 18.00dp 37.50dp 126.00dp 8dp 39.00dp 39.00dp 22.50dp 30.00dp 18.00dp 150.00dp 18.00dp 37.50dp
一切都会好起来的
values-es 和 values-fr 只是包含 strings.xml 的文件夹,其中没有任何尺寸。例如,我使用 @dimen/answer_row_height 引用整个布局 xml 文件。
正如我之前所说,如果我将带有缩放的 dimens.xml 文件的 values-hdpi 放入其中,它会完美运行,但如果我删除它,Android 不会对其进行缩放。有没有人打过这个或者知道我在搞砸什么?
【问题讨论】:
-
请从 values 和 values-sw600dp 发布您的dimens.xml
-
修剪以适应评论限制
40.00dp 14.00dp 14.00dp 24.00sp 36.00dp 24.00sp 40.00dp 36.00dp -
您如何访问这些
dimens.xml值? -
横向的 SGS4 可能会命中 sw600dp 资源。你能确认不是吗?