在Android中,如何将视图附加到软键盘?

时间:2011-01-27 19:57:18

标签: java android android-manifest android-softkeyboard

我所拥有的是以照片为主背景的照片上传活动,以及底部的edittext和一组按钮。当我点击edittext时,我希望软键盘向上推动编辑文本和按钮(因此它们仍然是可见的)并保持背景图像相同。但是,现在它只是将它推得足以看到edittext的第一行,我的所有按钮都被隐藏了。

我基本上想要以某种方式将视图附加到软键盘并将剩下的活动单独留下。我已经尝试在清单中设置windowSoftInputMode标志,但没有一个选项产生我想要的效果(我不希望布局调整大小并且pan似乎没有影响)。我如何实现这样的目标?

1 个答案:

答案 0 :(得分:1)

不幸的是,在当前的SDK中,当涉及软键盘显示和消失时视图的行为方式时,我们对系统的态度有点怜悯。实现您正在寻找的行为的最佳方法是在窗口上保留默认输入模式,并确保视图中有一个可滚动元素。请记住,在隐藏键盘时(内容小于滚动视图),此元素不需要滚动,但是当键盘显示时,它将折叠可滚动视图的大小并将其他所有内容保留。

这是一个例子。假设这是你的res / layout / main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:id="@+id/control"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical">
    <EditText
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/>
    <Button
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:text="A Button"/>
  </LinearLayout>
  <ScrollView
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_above="@id/control">
  </ScrollView>
</RelativeLayout>

尝试将此作为基本活动的根布局,您会看到整个LinearLayout使用键盘上下滑动,因为Android正在调整ScrollView的视口大小而不是向上滑动视图足以显示聚焦的输入元素(您现在看到的)。