显示软键盘时向上移动布局?
我在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个步骤来滚动屏幕。
- 在你的活动的清单文件中写入:
机器人:windowSoftInputMode = “adjustResize”
- 在您的活动的oncreate()方法中添加以下行
getWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)。
- 然后将您的整个视图放在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);