android软键盘出现时会破坏布局

时间:2012-10-30 10:18:35

标签: android android-layout android-softkeyboard

这是一个布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0px"
            android:layout_weight="1" />

        <FrameLayout
            android:background="#0000ff"
            android:layout_width="match_parent"
            android:layout_height="0px"
            android:layout_weight="1" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0px"
            android:layout_weight="1" />

    </LinearLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" />

</RelativeLayout>

enter image description here

当触摸EditText并出现软键盘时,我希望蓝条保持不变。即我希望保留它的大小和位置。我在AndroidManifest中尝试了我的活动参数android:windowSoftInputMode的所有四个可能值。总是我的蓝色条在软键盘上移动或收缩:

android:windowSoftInputMode="adjustUnspecified"或默认情况下:

enter image description here

android:windowSoftInputMode="adjustPan"android:windowSoftInputMode="adjustNothing"

enter image description here

android:windowSoftInputMode="adjustResize"

enter image description here

当出现软键时,是否可以保持相同的大小和位置?

3 个答案:

答案 0 :(得分:3)

您必须使用<ScrollView>作为主要布局。 例如:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   ....
</ScrollView>

或在AndroidManiFest.xml中使用此代码:

<activity
     android:windowSoftInputMode="adjustNothing">
</activity>

答案 1 :(得分:1)

由于输入进入你的EditText,所以它总会移动一些东西。

考虑使用两种布局,一种用于键盘关闭时,一种用于键盘启动时。

使用ViewSwitcher可能会有所帮助。

答案 2 :(得分:0)

我认为这是因为您使用的是LinearLayout。你能用相对布局改变你的内部布局吗?在您目前的情况下,由于线性布局,键盘只会更改组件之间的边距。并使用adjustNothing更改您的配置。