安卓工具栏在键盘显示时向上移动

问题描述:

我的项目中有软键盘问题。安卓工具栏在键盘显示时向上移动

我在我的Activity中有一个EditText,listview和一个发送按钮的聊天屏幕。每当Edittext获得焦点它向上移动工具栏和布局。

我需要修复显示键盘时的工具栏和布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

android:orientation="vertical"> 

<RelativeLayout 
    android:id="@+id/relheader" 
    android:layout_width="fill_parent" 
    android:layout_height="58dp" 
    android:background="@color/blue" 
    android:gravity="center" 
    android:isScrollContainer="false"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/customtoolbar_back" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:weightSum="1"> 

     <TextView 
      android:id="@+id/idtextheaderprojectchatwithprivatemessage" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="Messages" 
      android:textColor="@color/white" 
      android:textSize="20dp" 
      android:textStyle="bold" /> 
    </android.support.v7.widget.Toolbar> 
</RelativeLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="5dp" 
    android:layout_weight="75" 
    android:orientation="vertical"> 


    <ListView 
     android:id="@+id/listViewwallpage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/relfb" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:cacheColorHint="@android:color/transparent" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:fadingEdge="none" 
     android:listSelector="@android:color/transparent" 
     android:overScrollMode="never" /> 

</LinearLayout> 

<RelativeLayout 
    android:id="@+id/relfb" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_gravity="right" 
    android:layout_marginTop="5dp" 
    android:background="@drawable/edittext_top_line" 
    android:minHeight="42dp" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp"> 

    <EditText 
     android:id="@+id/edtserach" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="5dp" 
     android:layout_toLeftOf="@+id/lin" 
     android:background="@drawable/greyedittext_background" 
     android:hint="Type something..." 
     android:inputType="textMultiLine" 
     android:maxLength="160" 
     android:singleLine="true" 
     android:textColor="#000000" /> 

    <LinearLayout 
     android:id="@+id/lin" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tvtextcount" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center_horizontal" 
      android:hint="" 
      android:textSize="12sp" 
      android:visibility="gone" /> 

     <Button 
      android:id="@+id/btnsend" 
      android:layout_width="wrap_content" 
      android:layout_height="30dp" 
      android:background="@android:color/transparent" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:text="Send" 
      android:textAllCaps="false" 
      android:textColor="@color/blue" 
      android:textSize="18sp" 
      android:textStyle="bold" /> 
    </LinearLayout> 
</RelativeLayout> 

我的RelativeLayout的工具栏和LinearLayout中的列表视图。 有什么建议吗?

检查您的清单以了解您的Activity。您可能需要重新配置如何处理输入法。请参阅this documentation

指定如何使你的UI应该响应

当输入法出现在屏幕上,它减少了可用于您的应用程序的UI空间量。系统会决定如何调整UI的可见部分,但可能无法正确显示。为确保您的应用具有最佳行为,您应该指定您希望系统如何在剩余空间中显示您的用户界面。

在参与活动的AndroidManifest.xlm

地说:

android:windowSoftInputMode="adjustResize" 
+0

这不适合我。 –

+0

在清单中,你必须把它放到你有问题的活动中,如果你把它放在另一个地方,它什么都不会做 –

在清单:

机器人:windowSoftInputMode = “stateAlwaysHidden”

添加到相应的活动代码。

更改工具栏如下:

<?xml version="1.0" encoding="utf-8"?> 

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/apptool_bar_bg" 
    android:minHeight="?attr/actionBarSize" 
    app:layout_scrollFlags="scroll|enterAlways|snap" 
    android:theme="@style/AppTheme.Toolbar" 
    app:titleTextAppearance="@style/AppTheme.Toolbar.Title"></android.support.v7.widget.Toolbar> 

我想你已经包含在清单的活动android:windowSoftInputMode="adjustResize"android:windowSoftInputMode="adjustPan"

如果您将它添加到清单中,请删除这些行。