2015-02-17 8 views
6

bin neu zu diesem und ziemlich neu für Android-Programmierung.WhatsApp-like Layout für mehrzeilige EditText und Tasten daneben

Ich versuche, ein Layout wie in der WhatsApp Chat-Aktivität zu machen. Was ich also erreichen möchte, ist das gleiche Layout und Verhalten wie beim EditText und den daneben liegenden Buttons. Dies bedeutet einen linken Button für Smileys und EditText in der Mitte und einen Button rechts daneben zum Versenden des Textes.

In WhatsApp, wenn der EditText seine Größe (mehrzeilig) erweitert, bleiben die Schaltflächen am unteren Rand. Aber es scheint nicht die Unterseite der Elternansicht zu sein, da die Buttons vorher auf den EditText zentriert wurden.

Ich habe viel versucht, die drei Ansichten in eine TableLayout-Reihe zu setzen. Oder einfach ein RelativeLayout verwenden. Aber nichts davon funktioniert richtig.

Kann mir jemand zeigen, wie man das erreicht? Ich kann mein XML aber .... gut ... es ist offensichtlich ziemlich schlecht: D

Vielen Dank im Voraus!

<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:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin"> 

<ListView 
    android:id="@+id/messages" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_above="@+id/footer_section"> 
</ListView> 

<LinearLayout 
    android:id="@+id/footer_section" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:minHeight="48dp"> 

     <ImageView 
      android:id="@+id/emoticons_button" 
      android:layout_height="match_parent" 
      android:layout_width="48dp" 
      /> 

     <EditText 
      android:id="@+id/message_text" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:layout_weight="1" 
      android:inputType="textMultiLine" 
      android:minLines="1" 
      android:maxLines="4"/> 

     <ImageView 
      android:id="@+id/send_button" 
      android:layout_height="match_parent" 
      android:layout_width="48dp" 
      android:layout_gravity="center_vertical"/> 

</LinearLayout> 

enter image description here

enter image description here

+0

Bitte geben Sie Ihre xml –

Antwort

13

bearbeiten

<ListView 
    android:id="@+id/messages" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/footer_section" 
    android:layout_alignParentTop="true" > 
</ListView> 

<LinearLayout 
    android:id="@+id/footer_section" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:orientation="horizontal" 
    android:background="#eeeeee"> 

    <ImageView 
     android:id="@+id/emoticons_button" 
     android:layout_width="48dp" 
     android:layout_height="match_parent" /> 

    <EditText 
     android:id="@+id/message_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical" 
     android:fadeScrollbars="false" 
     android:layout_weight="1" 
     android:inputType="textMultiLine" 
     android:maxLines="4" 
     android:minLines="1" 
     android:textColor="@android:color/black" /> 

    <ImageView 
     android:id="@+id/send_button" 
     android:layout_width="48dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" /> 
</LinearLayout> 

Wie Sie sagten, Sie Neuling in android sind, sollten Sie versuchen,mitfür das Layout, das Sie erreichen möchten.

Try unter 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="horizontal" 
android:weightSum="1" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="1dip" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <ImageButton 
     android:id="@+id/btn_emoticon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_emoticon" /> 

    <EditText 
     android:id="@+id/chat_text" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0" 
     android:paddingLeft="8dp" 
     android:paddingRight="6dp" /> 

    <ImageButton 
     android:id="@+id/btn_send" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_send_grey" /> 
</LinearLayout> 
</LinearLayout> 
+0

Hallo Dory, vielen Dank. Ok, ich denke, ich sollte ein wenig mit den Attributen witseSum und layout_weight umgehen. Ich habe es in einem RelativeLayout schon fast geschafft. Es gibt also oberhalb dieses Fußzeilenbereichs eine ListView wie oben beschrieben. Aber das Problem ist jetzt ... wenn die Tastatur auf dem Bildschirm angezeigt wird, wird der EditText nicht wirklich erweitert. Wenn ich die Tastatur verberge, tut es das. Nun .... wenn Sie mir weiter helfen können, ist es am besten, die XML-Datei zur Verfügung zu stellen. Ich schäme mich nur ein wenig dafür, weil es offensichtlich einige Fehler aufgrund von Missverständnissen oder Unverständnis enthält :-D – marcus

+0

Hallo @Marcus, ich habe dein Problem nicht wirklich verstanden. Könntest du mir genauer erläutern, was deine Anforderung ist? – Dory

+0

Hallo Dory, tut mir leid. Also habe ich zwei Bilder hinzugefügt. Ich möchte, dass der EditText maximal 4 Zeilen anzeigt. Wenn ich also Text eingabe, sollte das Parent LinearLayout seine Höhe entsprechend der EditText Höhe oder den zu zeigenden Zeilen erhöhen. Aber wenn die Tastatur angezeigt wird, tut dies nicht. Wenn ich die Tastatur schließe, zeigt der EditText maximal 4 Zeilen und das übergeordnete LinearLayout hat auch eine größere Höhe. Das möchte ich aber schon bei der Texteingabe erreichen und wenn die Tastatur damit angezeigt wird. Hast du es verstanden? – marcus

Verwandte Themen