4

如果您将 Android 清单文件中的目标 SDK 版本设置为“3”,那么您在大屏幕设备上的布局将只是在小屏幕设备上的放大版本。将目标 SDK 设置为更高的 SDK 后,您可以为每个屏幕密度创建单独的布局,从而提供更好的用户体验。

但是,我的布局主要由图像组成,它们的分辨率足够高,即使在放大时也能在所有屏幕尺寸上正常显示,因为它们足够大,不需要拉伸。现在,对我来说,创建一个小屏幕布局并放大它会容易得多,因为它在大屏幕上仍然看起来不错。有什么方法可以在不返回 API 级别 3 的情况下获得这种效果?

4

5 回答 5

6

您可以使用重量参数。
“权重”是一个术语,用于指定特定视图在绘制后是否还有空间时应占据屏幕的多少。

只需制作一个LinearLayout并在其中放置两个TextViews

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="small"
    android:layout_weight="0.2"
    android:background="#123" />
 <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.8"
    android:text="huge"
    android:background="#456"
 />
</LinearLayout>

您会注意到视图如何相应地占用空间。您可以为较小的屏幕创建任何您想要的布局并指定权重属性,并且每件事都会得到精美的调整

于 2012-10-26T15:37:42.677 回答
4

只是不要为更大的屏幕指定布局。默认情况下,它对所有屏幕使用相同的屏幕,除非有更具体的布局可用。如果您使用match_parent宽度和高度以及图像scaleType="fitCenter""centerCrop"- 类似的东西,它应该填充它运行的任何屏幕尺寸。

于 2012-10-26T15:37:18.117 回答
2

不要忘记让您的应用与平板电脑兼容。您必须添加

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

在您的应用清单中。

于 2012-10-31T10:01:45.707 回答
0

嗯。我认为只要您不使用 AbsoluteLayout 之类的东西,Android 就已经这样做了。有一些技巧可以帮助过渡。不完全确定问题在问什么,但我会试一试。API 级别 3 是否随宽高比或其他东西缩放?

我发现从手机到平板电脑的大部分 UI 丑陋都与宽度有关。您可以使用逻辑来将宽度固定在某个分辨率。否则,布局看起来和行为都很好。还有其他技巧,例如使用不同的 dimens.xml 调整资产大小,以及为不同的屏幕尺寸和密度设置不同的 dimens.xml 集。

您不必在每个版本中都有每个维度。您只需要设置每个值集的基本版本,并且可以在其他文件中设置不同的维度。

于 2012-11-02T15:50:53.473 回答
-1

通过不同的屏幕尺寸调整图像大小的唯一方法是使用九个补丁。这是关于该主题的更多资源:http: //developer.android.com/tools/help/draw9patch.html

我相信您唯一能做的就是在布局中使用相对宽度/高度(重量)和以 Ninepath 格式格式化的图像。

于 2012-11-03T22:20:30.413 回答