RelativeLayout 中的 ScrollView

ScrollView inside a RelativeLayout

我需要在相对布局中做一个滚动视图。

当我添加 ScrollView 时,结果是这样 http://postimg.org/image/6abxth299/ 组件只占据了屏幕的一半,当这个屏幕打开时,键盘默认出现

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical" >
    <RelativeLayout 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"
        tools:context=".MainActivity"
        android:layout_centerHorizontal="true"
        android:id="@+id/data_entry_layout">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Post Title"
                android:id="@+id/post_title"
                android:layout_alignBaseline="@+id/post_title_input"
                android:layout_alignBottom="@+id/post_title_input"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:textSize="26px"/>

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/post_title_input"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_toRightOf="@+id/post_title"
                android:layout_toEndOf="@+id/post_title"
                android:inputType="textCapSentences"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Post Description"
                android:id="@+id/post_description"
                android:layout_below="@+id/post_title_input"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginTop="39dp"
                android:textSize="26px"/>

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine|textCapSentences"
                android:ems="10"
                android:id="@+id/editText"
                android:layout_marginTop="16dp"
                android:layout_below="@+id/post_description"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"/>

            <ImageButton
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/imageButton1"
                android:layout_below="@+id/editText"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:baselineAlignBottom="false"
                android:contextClickable="true"
                android:src="@drawable/image_button_icon"
                android:onClick="galleryIntent"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Cancel"
                android:id="@+id/cancel"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_below="@id/imageButton1"

               />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Submit"
                android:id="@+id/submit"
                android:layout_alignTop="@+id/cancel"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_below="@id/imageButton1"/>

    </RelativeLayout>
</ScrollView>

scrollview第一个dirsct的高度child,无论是相对布局还是线性布局,都应该是wrap content,不匹配parent。此外,内部 childs 应该具有特定的重量或高度,并且不匹配 parent 就像您为 imageButton 所做的那样。

我认为 ScrollView 在 Relativelayout 中不起作用。最好用LinearLayout。

尝试将以下内容添加到您的 AndroidManifest 中 activity 以删除默认出现的键盘

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

并为滚动视图使用 android:layout_height="wrap_content",建议使用 LinearLayout 垂直方向 布局用于此类用途。

试试这个...

<?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"
    android:fillViewport="true">

    <RelativeLayout
        android:id="@+id/data_entry_layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">
        <RelativeLayout
            android:id="@+id/Rel12345"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        <TextView
            android:id="@+id/post_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/post_title_input"
            android:layout_alignBottom="@+id/post_title_input"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:text="Post Title"
            android:textSize="26px" />

        <EditText
            android:id="@+id/post_title_input"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_toEndOf="@+id/post_title"
            android:layout_toRightOf="@+id/post_title"
            android:inputType="textCapSentences" />

        <TextView
            android:id="@+id/post_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/post_title_input"
            android:layout_marginTop="39dp"
            android:text="Post Description"
            android:textSize="26px" />

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/post_description"
            android:layout_marginTop="16dp"
            android:ems="10"
            android:inputType="textMultiLine|textCapSentences" />

        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/editText"
            android:baselineAlignBottom="false"
            android:contextClickable="true"
            android:onClick="galleryIntent"
            />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/Rel1234"
            android:layout_below="@id/Rel12345"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">

            <Button
                android:id="@+id/cancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:text="Cancel"/>

            <Button
                android:id="@+id/submit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignTop="@+id/cancel"
                android:text="Submit" />
        </RelativeLayout>
    </RelativeLayout>
</ScrollView>

并尝试将以下内容添加到您的 AndroidManifes 中以删除默认使用的键盘

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"