如何防止键盘隐藏我的EditText?

问题描述 投票:3回答:5

我在顶部有一个RelativeLayout,然后在下面有一个ListView,最后在底部有一个relativeLayout,里面有一个EditText和一个Button。

当我单击EditText并出现IME(虚拟键盘)时,我希望ListView调整大小。如果我在清单中放入adjustResize,则将调整Listview的大小以为IME留出空间,但是IME覆盖了下面带有EditText的RelativeLayout,IME覆盖了我看不到我在写什么。如果我放adjustPan,键盘将全部按下,则不会调整ListView的大小,并且会松开顶部的RelativeLayout。

我的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/application_background"
    android:paddingLeft="15px"
    android:paddingRight="15px"
    android:paddingTop="15px"
    android:paddingBottom="15px">

    <RelativeLayout
        android:id="@+id/rlyParentPost"
        android:orientation="vertical"
        android:layout_width="450px"
        android:layout_height="85px"
        android:background="@drawable/app_gradient_color"
        android:layout_centerHorizontal="true">
        <ImageView
            android:id="@+id/imgUserOfParent"
            android:layout_marginLeft="10px"
            android:layout_marginTop="10px"
            android:background="@drawable/userfeed"
            android:layout_width="64px"
            android:layout_height="64px"
            android:layout_below="@+id/logoImg">
        </ImageView>
        <TextView
            android:layout_below="@+id/logoImg"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblNameOfParent"
            android:textSize="17px"
            android:textStyle="bold"
            android:layout_marginLeft="5dip"
            android:layout_marginTop="11dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff">
        </TextView>
        <TextView
            android:layout_below="@+id/lblNameOfParent"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblBodyOfParent"
            android:textColor="#ffffff"
            android:textSize="17px"
            android:layout_marginLeft="5dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>
        <TextView
            android:layout_below="@+id/lblBodyOfParent"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblDateOfParent"
            android:textColor="#70ccff"
            android:textSize="11px"
            android:layout_marginLeft="7dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/rlyParentPost"
        android:id="@+id/contentLayout">

     <ListView
       android:isScrollContainer="true"
         android:id="@+id/lsvComments"
         android:layout_height="515px"
         android:layout_width="450px"
         android:background="#ffffff"
         android:listSelector="@drawable/multi_white_color"
         android:drawSelectorOnTop="false"
         android:divider="#9aa5ac"
         android:cacheColorHint="#00000000"
         android:dividerHeight="1px">
     </ListView>

     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:padding="5dip"
         android:layout_below="@+id/lsvComments"
         android:background="@drawable/app_gradient_comments"
         android:id="@+id/contentLayout">
         <EditText
             android:inputType="text"
             android:id="@+id/txtComment"
             android:hint="What are you working on?" 
             android:textSize="22px"
             android:layout_marginLeft="8px"
             android:layout_height="72px"
             android:layout_width="344px">
         </EditText>
         <Button
             android:layout_toRightOf="@+id/txtComment"
             android:id="@+id/cmdShare"
             android:layout_width="79px"
             android:layout_height="65px"
             android:background="@drawable/feed_comments_multi_stage"
             android:layout_marginLeft="7px">
         </Button>
    </RelativeLayout> 
   </RelativeLayout>
</RelativeLayout>
android keyboard android-edittext
5个回答
2
投票

您不应该使用显式像素值设置layout_width和layout_heights。而是根据需要使用wrap_parent或fill_parent。

如果要使像文本视图这样的东西具有特定的宽度,请使用可在不同屏幕分辨率下正确调整的dpi单位。

关于您的特定虚拟键盘问题,我将尝试设置ListView,以使其占用剩余空间。

-将ListView以外的所有东西的高度设置为wrap_parent-将ListView设置为fill_parent,

ListView应该占用很多可用空间,因此当您要求它调整大小时会缩小。


2
投票

我遇到了同样的问题,并且找到了解决方案。就我而言,在Manifeste.xml中,我声明了minSdkVersion = 3(Android 1.5),并且我的项目是使用Android 2.2(SDK 8)编译的,从理论上讲,它应该可以工作...但是不行!我将minsdkVersion修改为4(Android 1.6),就可以了。这只是不同的Android SDK之间的兼容问题。祝你好运。


2
投票

[如果您有机会使用此:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

这可能会导致问题。我最初添加该行是为了解决状态栏将应用程序向下推动的错误……但是这也阻止了键盘将应用程序向上推动。

叹息


1
投票

U可以像这样添加滚动视图:

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

..........


</ScrollView>

这将使应用程序将焦点放在编辑文本上,并将其调整为在屏幕上聚焦!它也可以在片段内部工作!


0
投票

如果键盘覆盖了EditText字段,请使用以下代码:

EditText= findViewById(R.id.edittext)
EditText?.getParent()?.requestChildFocus(EditText,EditText)

如果要使Cursor在焦点编辑文本中,而不是使用EditText.requestFocus() 之后 EditText?.getParent()?.requestChildFocus(EditText,EditText),它有助于在焦点编辑文本中获得焦点和光标。

© www.soinside.com 2019 - 2024. All rights reserved.