WindowSoftInputMode和ScrollView

时间:2012-08-09 23:31:03

标签: android android-layout

我的Android应用主要活动如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ScrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:orientation="vertical"
        android:paddingLeft="60dp"
        android:paddingTop="53dp" >

        <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/RelativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/billAmountText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/billAmount_string"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/billAmount"
                android:layout_width="173dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/billAmountText"
                android:layout_marginTop="3dp"
                android:inputType="numberDecimal" />
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

为了确保在键盘弹出时不会挤压背景图像(在第一个RelativeLayout中定义),我在清单文件中为我的活动设置了android:windowSoftInputMode="stateVisible|adjustPan。现在所有的背景和布局都很好,没有任何内容可以调整大小。

但问题是我的ScrollView现在不能正常工作,因为我认为由于我对清单的上述修改,系统认为窗口不需要调整大小 - 所以ScrollView没有被激活。当我将android:windowSoftInputMode="stateVisible|adjustPan取出时,滚动工作正好相反,但当键盘弹出时背景会被挤压。

有没有办法对它进行编码,这样我的背景就不会受到挤压,而且我的ScrollView仍能正常工作?谢谢!

2 个答案:

答案 0 :(得分:3)

尝试在您的活动中使用具有以下值的属性windowSoftInputMode

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

我不知道是否有必要,但您可以尝试将ScrollView标记fillViewPort添加到true<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true"> <!-- Other Views --> </ScrollView> 。 所以它应该看起来像我在下面给你看的东西:

{{1}}

让我知道你的进展。

答案 1 :(得分:1)

在您的滚动视图中放置相对布局,子0是图像视图,子1是您的内容。使用imageview作为背景图像(src)而不是scrollview的背景。 imageview将尊重scaleTypes,而布局的背景则不会。