打开软键盘时,RecyclerView会隐藏Actionbar

时间:2014-11-30 11:09:40

标签: android android-layout listview android-5.0-lollipop android-recyclerview

我有以下布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container">

    <com.example.SendMessageLayout
        android:id="@+id/chatMessageLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        />

    <View
        android:id="@+id/separator"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_above="@id/chatMessageLayout"
        android:background="@color/seperator_line_inpost"
        />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_above="@id/separator"
        >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycleView"
            style="@style/BeepMeListView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/chatMessageLayout"
            android:layout_alignParentTop="true"
            android:transcriptMode="alwaysScroll"
            />
    </android.support.v4.widget.SwipeRefreshLayout>

</RelativeLayout>

虽然SendMessageLayout只是一个包含EditText和Button的布局。 在旧的实现中我使用普通的旧ListView,所以当我请求焦点编辑文本时,键盘会出现,listview没有移动,第一项是可见的。 但是随着RecyclerView的推出,一切都被推高了,不仅顶部项目不在屏幕之外,而且整个布局都在ActionBar之上。

这里看起来如何...... RecycleView Screenshot

2 个答案:

答案 0 :(得分:5)

只需添加一个空的scrollview,已解决:RecyclerView hides Actionbar when SoftKeyboard is opened 解决办法

像这样:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    tools:context="me.drakeet.seashell.ui.social.PostActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ScrollView>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <me.drakeet.seashell.widget.MultiSwipeRefreshLayout
            android:layout_weight="1"
            android:layout_marginBottom="4dp"
            android:id="@+id/swipe_refresh_layout"
            style="@style/BbsBackground"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_reply_list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:minHeight="48dp"/>

        </me.drakeet.seashell.widget.MultiSwipeRefreshLayout>

        <include
            android:layout_gravity="bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            layout="@layout/view_reply"/>
    </LinearLayout>

</FrameLayout>

答案 1 :(得分:0)

我有同样的问题,我解决了它添加

android:windowSoftInputMode="adjustResize"

在清单

中的活动代码中