带有按钮的ScrollView滚动不同的内部TabHost

时间:2011-04-26 19:11:25

标签: android scroll scrollview android-tabhost

我有一个Activity,它包含一个大的scrollview(包含EditText字段)以及一个锚定在屏幕底部的按钮(不是scrollView的一部分)。这是一个显示我看到的问题的简单示例。我的应用程序的清单为所有活动指定了android:windowSoftInputMode = adjustPan。

如果我直接运行此活动,则所有内容都会正确显示,并且滚动视图会在编辑字段之间滚动。

我没有足够的积分来发布图片或> 2个超链接.....

No TabHost - edit first field

如果我将此活动作为TabHost的内容运行,则滚动似乎是不可靠的。只要EditText获得焦点,活动就会正确地平移到“编辑”字段。但是,它也会强制按钮进入屏幕。

Inside TabHost - edit first field - Where did that button come from

我尝试使用LinearLayout(按钮的负边距)以及RelativeLayout为此Activity创建布局,并且两者都显示相同的问题,滚动浏览3个EditText字段时按钮始终可见。< / p>

之前有没有人见过这样的东西,或者知道如何让滚动在TabHost中正常工作?????

LinearLayout版本

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="60dip"
    >
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >       
        <EditText android:id="@+id/e1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 1"
            />
        <EditText android:id="@+id/e2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 2"
            />
        <EditText android:id="@+id/e3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 3"
            />
    </LinearLayout>
</ScrollView>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_marginTop="-60dip"
    android:layout_gravity="center"
    />

RelativeLayout版本

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    />
<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_above="@+id/button1"
    >
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >       
        <EditText android:id="@+id/e1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 1"
            />
        <EditText android:id="@+id/e2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 2"
            />
        <EditText android:id="@+id/e3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dip"
            android:layout_marginBottom="30dip"
            android:hint="edit text 3"
            />
    </LinearLayout>
</ScrollView>

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果这有助于其他人......

TabHost中托管的所有活动都有android:windowSoftInputMode = adjustPan。

但是,托管TabHost的Activity缺少android:windowSoftInputMode = adjustPan。 一旦我添加了它,平移就会在TabHost内部或TabHost外部进行。