我有一个Activity,它包含一个大的scrollview(包含EditText字段)以及一个锚定在屏幕底部的按钮(不是scrollView的一部分)。这是一个显示我看到的问题的简单示例。我的应用程序的清单为所有活动指定了android:windowSoftInputMode = adjustPan。
如果我直接运行此活动,则所有内容都会正确显示,并且滚动视图会在编辑字段之间滚动。
我没有足够的积分来发布图片或> 2个超链接.....
如果我将此活动作为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>
提前致谢。
答案 0 :(得分:0)
如果这有助于其他人......
TabHost中托管的所有活动都有android:windowSoftInputMode = adjustPan。
但是,托管TabHost的Activity缺少android:windowSoftInputMode = adjustPan。 一旦我添加了它,平移就会在TabHost内部或TabHost外部进行。