2013-04-09 9 views
6

Sì, questa è ancora un'altra domanda di editorext su SO. E sì, ho già passato tutte quelle domande crescenti. Ma questo è un po 'specifico.Edittext Android cresce automaticamente con il testo e spinge verso il basso

UI:

enter image description here

Un layout semplice androide con EditText e pulsante sottostante. Quando il testo è inferiore, la vista di edittext copre ancora lo schermo intero lasciando spazio per il pulsante sottostante.

Una volta che l'utente inizia a immettere il testo, edittext cresce verticalmente per contenere il testo. Allo stesso tempo, il pulsante dovrebbe anche continuare a spingere verso il basso per consentire a edittext di crescere.

L'utente può scorrere verticalmente lo schermo per visualizzare il testo completo.

UI dopo l'immissione di testo significativo:

enter image description here

Ecco il layout con EditText e pulsante qui sotto:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/background" 
    android:clipToPadding="false" 
    android:fadingEdge="none" 
    android:fillViewport="true" 
    android:padding="13dp" 
    android:scrollbarStyle="outsideOverlay" > 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"> 

     <!-- some fixed width image --> 
     <ImageView 
      android:id="@+id/someimage" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="4dp" 
      android:src="@drawable/page_white_text" /> 

     <EditText 
      android:id="@+id/some" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/someimage" 
      android:background="@null" 
      android:gravity="top" 
      android:minLines="10" 
      android:minHeight="50dp" 
      android:textColor="#222222" 
      android:textSize="15dp" 
      android:typeface="serif" > 
      <requestFocus /> 
     </EditText> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:baselineAligned="true" 
      android:layout_marginTop="5dp" 
      android:padding="10dp" 
      android:orientation="vertical" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </LinearLayout> 
    </RelativeLayout> 

</ScrollView> 

Questo funziona più o meno. Ma quando inserisco molto testo, invece di premere il pulsante verso il basso. Si va dietro le cose come:

enter image description here

Qualsiasi aiuto qui è molto apprezzato. Grazie :)

risposta

2

Ecco il mio consiglio: all'interno del ScrollView, mettere un RelativeLayout in cui è possibile inserire ogni elemento in un certo ordine utilizzando Android: layout_below. Per la crescita automatica del tuo EditText, usa questo solution.

Vediamo un esempio:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_gravity="center"> 
<RelativeLayout 
    android:id="@+id/general2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_margin="20sp" > 

    <TextView 
     android:id="@+id/textFirstOpinion" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="@string/titleFirstOpinion" 
     android:textStyle="bold" 
     android:textSize="23sp" 
     android:textColor="#FFFFFF" 
     android:layout_marginTop="10dp" /> 

    <EditText 
     android:id="@+id/fieldFirstOpinion" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/textFirstOpinion" 
     android:minHeight="80sp" 
     android:isScrollContainer="true" 
     android:inputType="textMultiLine" 
     android:textSize="20sp" 
     android:gravity="top|left" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="110dp" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/fieldFirstOpinion" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="37sp" 
     android:textSize="23sp" 
     android:text="@string/textSendButton" 
     android:gravity="center_horizontal" 
     android:padding="10dp" /> 

</RelativeLayout> 
</ScrollView> 
0

prova ad aggiungere Android: layout_below = "@ id/un po '" nel LinearLayout come

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:baselineAligned="true" 
     android:layout_marginTop="5dp" 
     android:padding="10dp" 
     android:orientation="vertical" 
     android:layout_below="@id/some" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 

    </LinearLayout> 
+0

Hi Vinit, vedere commentare sopra ans. –

0

Dal momento che si desidera che il pulsante di essere in fondo alla pagina, aggiungere la seguente riga

android:layout_below="@+id/some" 
android:layout_centerHorizontal="true" 
android:layout_alignParentBottom="true" 

nel codice LinearLayout qui come

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/some" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_alignParentBottom="true" 
     android:baselineAligned="true" 
     android:layout_marginTop="5dp" 
     android:padding="10dp" 
     android:orientation="vertical" > 

assicurarsi inoltre che il layout:height parametro EditText è impostato su wrap_content Prova questo e dimmi se funziona o no

+0

Impostando layout_alcunio a id/alcuni fa passare il pulsante a edittext. Volevo che fosse mostrato a schermo intero e che il pulsante si fermasse in basso. Se il testo nel testo di modifica cresce oltre lo schermo, dovrebbe premere il pulsante in basso. Questo funziona parzialmente :( –

+0

okay sto modificando la mia risposta –

Problemi correlati