2016-10-11 7 views
2

Ich habe eine RecyclerView und eine EditText innerhalb einer CardView. Zweck der Aktivität ist das Chatten. So enthält die RecyclerView alle gesendeten und empfangenen Nachrichten und die CardView ist, wo der Benutzer die Nachrichten eingibt. Um zu dem Problem zu kommen, muss ich den Inhalt verschieben, wenn die Tastatur auftaucht. Nun, das scheint kein einfaches Problem zu sein.Wie schiebe ich den Inhalt eines Views, wenn Keyboard erscheint?

Ich habe versucht, all diese Fragen:

Und kommt die Lösung für die meisten nach unten android:windowSoftInputMode zu verändern. Was ich versucht habe, wechselte auf adjustPan und adjustResize. Hier ist der Code auf meine Aktivität:

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    android:background="#F0F0F0" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:paddingStart="10dp" 
    android:paddingEnd="10dp" 
    tools:context="com.devpost.airway.MainActivity"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/chatView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </android.support.v7.widget.RecyclerView> 

    <android.support.v7.widget.CardView 
     android:layout_alignParentBottom="true" 
     android:layout_marginTop="10dp" 
     app:cardElevation="0dp" 
     app:cardCornerRadius="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="50dp"> 

     <EditText 
      android:id="@+id/chat_input" 
      android:paddingStart="2dp" 
      android:paddingEnd="2dp" 
      android:inputType="text" 
      android:imeOptions="actionSend" 
      android:background="@null" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </android.support.v7.widget.CardView> 

</RelativeLayout> 

Und adjustPan funktioniert in einer sehr vage Art und Weise, ich habe den Screenshot unten hinzugefügt, bitten wir einen Blick:

BILD-1

IMAGE-1

BILD-2

enter image description here

nun deutlich von Bild-1 und Bild-2 gibt es einige Probleme:

  • Die ActionBar nach oben bewegt wird.
  • Wenn Keyboard oben knallt es fügt eine Übergangsanimation
  • Es die gesamte RecyclerView nach oben drückt

Also, die Frage ist:

es manuell möglich ist, alle Methoden außer Kraft zu setzen und die Dinge umsetzen ich selbst, andere als die android:windowSoftInputMode zu ändern, wie es bevorzugt? Freundlich helfen.

+0

Kaum Änderungen vorgenommen haben, nichts tun. @Ironman – OBX

Antwort

-1
<android.support.v7.widget.RecyclerView 
    android:id="@+id/chatView" 
    android:layout_width="match_parent" 
    android:layout_above="@+id/editorCard" 
    android:layout_height="wrap_content" /> 

<android.support.v7.widget.CardView 
    android:id="@+id/editorCard" 
    android:layout_alignParentBottom="true" 
    android:layout_marginTop="10dp" 
    app:cardElevation="0dp" 
    app:cardCornerRadius="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="50dp"> 
<!--your editor code--> 
</android.support.v7.widget.CardView> 

wrap_content und layout_above sind die wichtigsten Änderungen für das gewünschte Verhalten

und in softinputmethod, machen es adjustPan|adjustResize

Verwandte Themen