显示软键盘时向上移动布局?

我在RelativeView中有几个元素,并且在popup软键盘时,元素被软键盘隐藏起来。

我希望他们向上移动,以便如果有足够的屏幕空间,他们会显示在键盘上方,或者使键盘上方的部分可滚动,以便用户仍然可以看到元素。

任何想法如何解决这个问题?

是的,请查看Android开发人员网站上的这篇文章,其中描述了框架如何处理软键盘的出现。

android:windowSoftInputMode属性可以用来指定在每个活动的基础上发生的事情:布局是否resize或滚动等

你也可以在onCreate()方法中使用这个代码:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

在您的活动中添加AndroidManifest.xml文件:

 android:windowSoftInputMode="adjustPan|adjustResize" 

修改你的Manifest文件的活动

 windowSoftInputMode="adjustResize" 

要么

在活动类中的onCreate()方法中进行更改

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

类似的问题,我面临与我的布局,其中包括滚动视图内。 每当我尝试在EditText中select文本,复制/剪切/粘贴操作栏被移动到下面的代码,因此它不会调整布局

 android:windowSoftInputMode="adjustPan" 

通过修改如下

1)AndroidManifest.xml

 android:windowSoftInputMode="stateVisible|adjustResize" 

2)style.xml文件,以活动样式

 <item name="android:windowActionBarOverlay">true</item> 

有效。!!!!!!!!!!!!

在AndroidManifest.xml中,不要忘记设置:

  android:windowSoftInputMode="adjustResize" 

并为ScrollView内的RelativeLayout设置:

  android:layout_gravity="center" or android:layout_gravity="bottom" 

会好起来的

我已经find了解决我的问题,它和你的一样。

首先,我只有一个具有2个元素的LinearLayout,一个ImageView和一个包含2个EditText和一个Button的LinearLayout,所以我需要在没有键盘的情况下将它们全屏分开,而当键盘出现时,它们应该更近一些。

所以我把它们之间的视图与0dp和1中的高度属性相加,这让我保持我的观点彼此分离。 当键盘出现时,他们没有固定的高度,他们只是调整和保持方面。

瞧! 当键盘是或不存在时,布局resize和我的视图之间的距离是相同的。

我尝试了迭戈拉米雷斯的方法,它的作品。 在AndroidManifest中:

  <activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden|adjustResize"> ... </activity> 

在activity_main.xml中:

 <LinearLayout ... android:orientation="vertical"> <Space android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /> <EditText android:id="@+id/edName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/first_name" android:inputType="textPersonName" /> <EditText ...> ... </LinearLayout> 

有3个步骤来滚动屏幕。

  1. 在你的活动的清单文件中写入:

机器人:windowSoftInputMode = “adjustResize”

  1. 在您的活动的oncreate()方法中添加以下行

getWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)。

  1. 然后将您的整个视图放在XML文件的“Scrollview”中,如下所示:
 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:background="@drawable/bg" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_gravity="center" > <TextView /> ......... <TextView /> <EditText > <requestFocus /> </EditText> <Button /> </RelativeLayout> </ScrollView> 

PS不要忘记在父亲相对布局中添加android:layout_gravity =“center”。

这里是完整的清单代码

 <activity android:name=".activities.MainActivity" android:windowSoftInputMode="adjustResize" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

在其oncreate方法插入行下

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

并在其onCreate方法的片段

 getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

如果你在碎片,那么你必须添加下面的代码到你的onCreate对你的活动它解决了我的问题

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);