2011-01-27 82 views
2

我所拥有的是以照片为主要背景的照片上传活动,以及底部的编辑文本和一组按钮。当我点击edittext时,我想让软键盘将edittext和按钮向上推(使它们仍然可见)并保持背景图像相同。然而,现在它只是将它推到足以看到edittext的第一行,并且我的所有按钮都被隐藏了。在Android中,如何将视图添加到软键盘?

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

+0

不知道我是否正确理解了这种情况,但是无法将图像设置为根布局背景资源,并且不必担心其调整大小,而其余布局可以通过键盘上下移动? – ANemati 2017-01-12 21:40:37

回答

1

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

下面是一个例子。比方说,这是你的RES /布局/ 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的视口,而不是向上滑动视图JUST足以显示焦点输入元素(您现在看到的)。

+0

感谢您的回复。我也尝试了这一点,但后来我遇到了这样的问题,即如果背景图像大于可视区域,它将伸展并可滚动。这是我想要避免的。如果图像随键盘向上滚动,那很好,但是当键盘没有弹起时,我不希望任何东西足够大以至于无法滚动(所以我希望我的图像占据可视空间,不再需要)。我确信有一个解决方案涉及获取设备宽度和高度,并以编程方式调整图片大小,但我想避免使用常量。 – 2011-01-28 14:44:22