Android横向模式切断了我上一个EditText

时间:2016-01-09 16:41:47

标签: android android-layout

我的申请中遇到了问题。

我的布局包含:

  • ImageView的
  • 按钮
  • 四个EditText

当我在横向模式下更改模拟器时,ScrollView会转到第三个EditText。最后的EditText不以横向模式显示。

我的layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="60dp"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="235dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:id="@+id/formulario_foto"
            android:background="#00A8EC"
            android:src="@drawable/person"/>

        <Button
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:id="@+id/formulario_foto_button"
            android:layout_alignParentBottom='true'
            android:layout_alignParentRight="true"
            android:layout_marginBottom="5dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/formulario_foto_button"
            android:elevation="5dp"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:textSize="20sp"/>

    </RelativeLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Nome"
        android:id="@+id/editTextNome" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:ems="10"
        android:hint="E-mail"
        android:id="@+id/editTextEmail" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Endereço"
        android:id="@+id/editTextEndereco" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:inputType="phone"
        android:ems="10"
        android:hint="Telefone"
        android:id="@+id/editTextTelefone" />

    </LinearLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:2)

看起来ScrollView不尊重其孩子的边缘。

中已经注意到了这种行为

解决方法是将LinearLayout包裹在FrameLayout中,即

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="60dp"
        android:orientation="vertical">
    ...
    </LinearLayout>
</FrameLayout>

效率稍低,因为它使用了额外的ViewGroup。如果您能够这样做,那么更有效的解决方案是在paddingTop而不是LinearLayout上使用layout_marginTop,即

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="60dp"
    android:orientation="vertical">
...
</LinearLayout>

答案 1 :(得分:0)

将线性布局高度更改为wrap_content