出现虚拟键盘时调整组件

时间:2014-02-28 11:23:06

标签: android android-layout android-linearlayout android-virtual-keyboard window-soft-input-mode

我正在设计一个简单的登录活动。我使用了以下xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center_vertical|center_horizontal"
        android:layout_margin="15dp">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="My application title"
            android:textSize="30sp"/>
    </LinearLayout>

     <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="vertical"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center_vertical"
        android:layout_margin="15dp">
          <EditText 
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="Username"/>      
          <EditText 
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="Password"
              android:layout_marginTop="15dp"/>
          <Button 
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="15dp"
              android:text="Login"/>
     </LinearLayout>

</LinearLayout>

我已经获得了这个结果:

enter image description here

但如果焦点在第一个EditText上,我得到了这个:

enter image description here

如果焦点在第二个EdiText上,结果就是下面的结果:

enter image description here

考虑到我在Manifest中使用了以下行,我的活动是:

android:windowSoftInputMode="adjustPan|adjustResize"

我希望当虚拟键盘出现时,两个edittext,按钮和textview都可见,并在可用屏幕中正确居中。 我的代码需要改变什么?

注意:我的结果相同如果删除清单中的行:

android:windowSoftInputMode="adjustPan|adjustResize"

1 个答案:

答案 0 :(得分:1)

您可以将父LinearLayout替换为ScrollView:

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

  <LinearLayout ...>

  ....
  ....

  </LinearLayout>


</ScrollView>

尝试这个,它适用于我的一些apk!

编辑:抱歉没有看到关于文本自动中心,所以有了这个你可以手动调整您的editext到中心用手指滑动..希望这将有所帮助