1

好的,我已经阅读了很多关于此的章节,但我仍然不知道为这个项目做的最好的事情是什么。

这是我有一个项目 [big one :)] 的情况,在这个项目中,一切都是针对分辨率为 480 x 800 像素的屏幕完成的。

这是新要求:)。他们要求支持分辨率为 240 x 320 像素的设备(此分辨率为小布局)。到目前为止一切都很好:),但问题是 240x320 的分辨率太小,无法仅通过缩放布局正常来适应组件。我需要对小屏幕手机进行全新的设计。

这意味着如果我现在在 layout-small/main.xml 中的 layout/main.xml 中有文本提交 R.id.textview1 我将没有 R.id.textview1 但我现在将有两个组件让我们说 R.id .button1 和 R.id.textviewsmall ...我的意思是这样的代码将不起作用,因为在 layout/main.xml 中 textview1 存在,但在 layout-small/main.xml 中不存在,它会抛出异常

((TextView)findViewbyId(R.id.textview1)).setText("something");

当然,这是我所解释的非常愚蠢的场景,我有一些非常复杂的事情,但我希望你明白我想要实现的目标。

问题是实现片段为时已晚,因为需要完成大量工作。所以我需要一些指导方针,我应该如何做到这一点......

任何想法或一些设计指南都会有很大帮助,谢谢...

4

2 回答 2

2

是的,你可以这样做。在许多应用程序中,我们可以手动设置我们想要的这种类型的布局。

为此,您首先必须以编程方式获取屏幕高度和宽度。现在一次,如果你得到它。您可以在Java文件中设置条件,如果屏幕高度和宽度等等。然后这样做。

希望你明白我的意思。

或者

如果您想通过 XML 设置布局,则制作不同的布局 XML,如下所示:

res/layout/my_layout.xml             // layout for normal screen size("default")        res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

之后,您可以手动设置特定布局的高度和宽度。希望这将是您问题的解决方案。

仍然如果它不是您的解决方案,那么请告诉我。. .

享受。:)

于 2012-01-27T09:15:17.990 回答
1

一种可能的方法是为小屏幕创建布局并指定权重属性,然后它也会在大屏幕上进行自我调整。如果您还使用不同密度的图像,那么在大多数情况下它可能对您有用。以下是如何在布局中指定权重。

<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-26T16:15:08.510 回答