这些方向在此处正确显示,但是当我运行它并更改方向时,横向模式不起作用且所有按钮都放错地方为
这个问题的解决方案可能是什么? 横向模式的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>
答案 0 :(得分:4)
主活动有 6 不同的布局,操作系统将根据为每个XML布局指定的限定符选择最适合当前设备的布局,定义规则{{3 }}
由于您已为small
/ normal
/ large
屏幕尺寸提供了布局,因此这些布局优先于您的land
布局。事实上,您land
布局的唯一使用时间是在xlarge
屏幕上运行时,因为只有在layout-land
中定义的布局才会被使用(查看上面的链接了解更多详情)。
您可以通过以下方式解决此问题:
layout-small
/ layout-normal
/ layout-large
,然后操作系统没有比使用layout-port
&amp; layout-land
,请注意多年来强烈建议不要使用layout-small
/ layout-normal
/ layout-large
,您应该查看here文章。layout-port
&amp; layout-land
,使用可用高度限定符(layout-hXXXdp
),其中XXX是您希望应用此布局的最小高度。例如,layout-h320dp
可以包含纵向模式下手机的布局,并将布局XML的并排版本放在默认文件夹(layout
)中。答案 1 :(得分:1)
根据您的图片显示您使用了 RelativeLayout ,因为没有空间可用于按钮,因此它重叠并且错位。
最好使用 ScrollView 作为 RelativeLayout 的父级,否则您必须通过计算屏幕高度和所有参数来动态调整按钮大小。