1

在此处输入图像描述

在此处输入图像描述

这些方向在这里正确显示,但是当我运行它并更改方向时,横向模式不起作用并且所有按钮都错位为在此处输入图像描述

这个问题的解决方案可能是什么?横向模式的 XML。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/flowers"
android:id="@+id/frontpage_layout"

                              tools:context="com.example.hassidiczaddic.multiplescreensupport.MainActivity">

   <RelativeLayout

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView">

    <Button
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="OPEN"
    android:textSize="20sp"
    android:id="@+id/button.open"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

   <Button
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="LARGE"
    android:textSize="20sp"
    android:id="@+id/button.large"
    android:layout_alignParentRight="true"
    android:layout_marginRight="86dp"
    android:layout_marginEnd="86dp"
    android:layout_toRightOf="@+id/button.rate"
    android:layout_toEndOf="@+id/button.rate" />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"

    android:text="Something"
    android:id="@+id/button.something"
    android:layout_marginTop="38dp"
    android:layout_below="@+id/button.open"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_toLeftOf="@+id/button.rate"
    android:layout_toStartOf="@+id/button.rate" />

    <Button
    android:layout_width="wrap_content"

    android:textSize="20sp"
    android:layout_height="wrap_content"
    android:text="RATE"
    android:id="@+id/button.rate"
    android:layout_marginTop="38dp"
    android:layout_below="@+id/button.something"
    android:layout_toRightOf="@+id/button.open"
    android:layout_toEndOf="@+id/button.open" />

    <Button
    android:layout_width="wrap_content"
    android:textSize="20sp"
    android:layout_height="wrap_content"
    android:text="CLOSE"
    android:id="@+id/button.close"
    android:layout_alignTop="@+id/button.something"
    android:layout_alignRight="@+id/button.large"
    android:layout_alignEnd="@+id/button.large"
    android:layout_toRightOf="@+id/button.rate"
    android:layout_toEndOf="@+id/button.rate" />
    </RelativeLayout>

    </ScrollView>
4

2 回答 2

4

主要活动有6种不同的布局,其中操作系统将根据为每个 XML 布局指定的限定符选择最适合当前设备的一种,规则在此处定义。

由于您已经为 // 屏幕尺寸提供了布局smallnormal因此large这些布局将优先于您的land布局。事实上,只有land在屏幕上运行布局时才会使用布局xlarge,因为只有在那时layout-land才会使用定义的布局(请查看上面的链接了解更多详细信息)。

您可以通过以下任一方式解决此问题:

  1. 删除layout-small/ layout-normal/ layout-large,那么 OS 没有什么比layout-port&中提供的更好用了layout-land,注意layout-small/ layout-normal/的使用layout-large多年来一直被强烈反对,你应该查看Supporting Multiple Screens文章。
  2. 不要使用layout-port& layout-land,而是使用可用高度限定符 ( layout-hXXXdp),其中 XXX 是您希望应用此布局的最小高度。例如layout-h320dp,可以包含纵向模式下的手机布局,并将布局 XML 的并排版本放在默认文件夹 ( layout) 中。
  3. 重新设计你的 UI 设计,这样就不需要以上任何东西了,也许可以通过将按钮放在ScrollView中。
于 2016-06-13T07:59:00.717 回答
1

根据您的图像显示您已使用RelativeLayout并且因为按钮没有可用空间所以它是重叠和错位的。

最好使用ScrollView作为RelativeLayout的父级,否则您必须通过计算屏幕高度和所有参数来动态调整按钮大小。

于 2016-06-13T07:26:37.250 回答