仅在android中调整scrollview的大小

时间:2013-09-17 12:09:47

标签: java android android-layout layout android-scrollview

我有一个像这样的android布局:

--------------
|   IMAGE1   | 
--------------
| SCROLLVIEW |  
--------------
|   IMAGE2   |
--------------

当键盘弹出以在scrollview的edittext中输入文本时,它会调整整个应用程序的大小。有没有办法将IMAGE2保留在屏幕底部?

应用程序的布局:

<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="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SignupActivity" >

        <ImageView
            android:id="@+id/Logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="26dp"
            android:src="@drawable/logo_1" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:scaleType="centerCrop"
            android:src="@drawable/wave_2" />

        <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/Logo" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="286dp"
                android:fadingEdge="none"
                android:orientation="vertical"
                android:paddingBottom="30dp" >

                <EditText
                    android:id="@+id/editName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/name" />

                <EditText
                    android:id="@+id/editSurname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/surname" />

                <EditText
                    android:id="@+id/editCompany"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/company" />

                <Space
                    android:layout_width="match_parent"
                    android:layout_height="20dp" />

                <EditText
                    android:id="@+id/editUsername"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/username" />

                <EditText
                    android:id="@+id/editPassword"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/password"
                    android:inputType="textPassword" />

                <EditText
                    android:id="@+id/editMail"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/mail"
                    android:inputType="textEmailAddress" />

                <Space
                    android:layout_width="match_parent"
                    android:layout_height="20dp" />

                <EditText
                    android:id="@+id/editAddress"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/address" />

                <EditText
                    android:id="@+id/editZipCode"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/zipcode" />

                <EditText
                    android:id="@+id/editCity"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/city" />

                <EditText
                    android:id="@+id/editCountry"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/country" />

                <EditText
                    android:id="@+id/editPhone1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/phone" />

                <EditText
                    android:id="@+id/editPhone2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:ems="10"
                    android:hint="@string/mobilephone" />

                <Space
                    android:layout_width="match_parent"
                    android:layout_height="20dp" />

                <Button
                    android:id="@+id/acceptButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="signup"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/register" />

            </LinearLayout>
        </ScrollView>

</RelativeLayout>

编辑:

这就是布局的实际情况。我希望将绿色波形图像保留在页面的末尾(键盘下方),同时仍然调整ScrollView的大小以使其可用。

http://i.stack.imgur.com/ji1FB.png http://i.stack.imgur.com/D4jcX.png

3 个答案:

答案 0 :(得分:2)

在活动代码中的清单中添加此行可能是有效的

    <activity
        android:name=".DemoActivity"
        android:windowSoftInputMode="stateHidden|adjustResize" >
    </activity>

答案 1 :(得分:1)

如果您希望IMAGE2卡在屏幕底部,请将以下代码放在manifest.xml中的activity标记内

<activity
       .
       . 
        android:windowSoftInputMode="adjustPan" >
</activity>

编辑:

尝试将下面的标记与

一起放在下面
android:windowSoftInputMode="stateVisible|adjustResize"

如果这个适合你,请告诉我。

答案 2 :(得分:0)

问题是您的ButtonScrollView的一部分。您应该将ButtonScrollView中提取到父RelativeLayout,然后更改属性,如下所示:

<Button
    android:id="@+id/acceptButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" //keep it to the bottom of the layout
    android:onClick="signup"
    android:layout_gravity="center_horizontal"
    android:text="@string/register" />

然后您的ScrollView也需要修改:

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Logo"
    android:layout_above="@+id/acceptButton" //make it stay above the button
    >

鉴于您使用的是android:windowSoftInputMode="adjustResize",这应该会给您正确的行为。

编辑:等等,如果您只想让背景保持定位,请尝试将该图片设置为windowBackground主题中的Activity。 (例如,将android:windowBackground="@drawable/my_background_image"添加到Activity使用的主题中。