0

请帮我解决一个问题。当我将 min sdk 版本从 3 (Android 1.5) 更改为 4 (1.6) 或更高版本时,尽管我使用 dp 和 sp 单位,但所有按钮和文本视图在多个屏幕上都具有相同的大小。为什么会这样?

简单示例(main.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
>
    <Button 
        android:id="@+id/button"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:text="OK"
        android:layout_centerInParent="true"
    />
</LinearLayout>

来自 Google Nexus 7 的屏幕截图:http: //s019.radikal.ru/i601/1312/fd/e769f6e3a690.png

索尼爱立信 Xperia Play 截图: http ://s019.radikal.ru/i600/1312/9d/6b3f580e7503.png

4

3 回答 3

1

1.6 Donut 添加了对不同屏幕尺寸和分辨率的支持

假设它们 [面向 API 级别 4 的应用程序] 支持不同的屏幕密度和尺寸。(除非另有说明,否则假定针对早期版本的应用程序仅支持中等密度的正常尺寸屏幕)。他们仍然可以使用supports-screens清单标签明确指定屏幕支持。

因此,当您的目标SDK 级别低于 4 时,您将获得一个兼容模式,其中dpsp单位实际上没有任何影响。仅当目标级别为 4 或更高时,像素才会相应缩放。

于 2013-12-06T12:26:06.587 回答
1

dimen.xml根据您的要求为以下文件夹创建:

  1. values
  2. values-hdpi
  3. values-ldpi
  4. values-mdpi
  5. values-sw600dp
  6. values-sw720dp-landETC...

并为此编写代码dimen.xmlxxxdp根据需要提供:

<resources>

    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="button_width">300dp</dimen>
    <dimen name="button_height">300dp</dimen>

</resources>

然后在您xml提交以下文件后:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    <Button 
        android:id="@+id/button"
        android:layout_width="@dimen/button_width"
        android:layout_height="@dimen/button_height"
        android:text="OK"
        android:layout_centerInParent="true" />
</LinearLayout>

以编程方式:

这也有效:

getResources().getDisplayMetrics().density;

这会给你:

  • 0.75 - ldpi
  • 1.0 - mdpi
  • 1.5 - hdpi
  • 2.0 - xhdpi
  • 3.0 - xxhdpi
  • 4.0 - xxxhdpi

可能会有所帮助...

谢谢...

于 2013-12-06T12:32:32.940 回答
1

您应该做的是制作不同的布局文件并将其放在不同的文件夹中(如layout-sw300dp, layout-sw400dp, layout-sw600dp)。这些布局将在不同尺寸和密度的屏幕中显示。

于 2013-12-06T12:10:21.520 回答