Android屏幕方向:

时间:2016-06-13 07:21:46

标签: android android-studio-2.1

enter image description here

enter image description here

这些方向在此处正确显示,但是当我运行它并更改方向时,横向模式不起作用且所有按钮都放错地方为enter image description here

这个问题的解决方案可能是什么? 横向模式的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>

2 个答案:

答案 0 :(得分:4)

主活动有 6 不同的布局,操作系统将根据为每个XML布局指定的限定符选择最适合当前设备的布局,定义规则{{3 }}

由于您已为small / normal / large屏幕尺寸提供了布局,因此这些布局优先于您的land布局。事实上,您land布局的唯一使用时间是在xlarge屏幕上运行时,因为只有在layout-land中定义的布局才会被使用(查看上面的链接了解更多详情)。

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

  1. 删除layout-small / layout-normal / layout-large,然后操作系统没有比使用layout-port&amp; layout-land,请注意多年来强烈建议不要使用layout-small / layout-normal / layout-large,您应该查看here文章。
  2. 而不是使用layout-port&amp; layout-land,使用可用高度限定符(layout-hXXXdp),其中XXX是您希望应用此布局的最小高度。例如,layout-h320dp可以包含纵向模式下手机的布局,并将布局XML的并排版本放在默认文件夹(layout)中。
  3. 重新设计您的UI设计,因此无需上述任何操作,可能是将按钮放在Supporting Multiple Screens中。

答案 1 :(得分:1)

根据您的图片显示您使用了 RelativeLayout ,因为没有空间可用于按钮,因此它重叠并且错位。

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