Autore Topic: Aumentare numero righe TextView contenuto in un ScrollLayout  (Letto 889 volte)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Aumentare numero righe TextView contenuto in un ScrollLayout
« il: 02 Settembre 2010, 01:43:03 CEST »
0
Io ho un textView di id: "in" all'interno di un ScrollLayout e un textView di id:"out" all'esterno di esso .. in un AbsoluteLayout

!!!!!!! Espongo qui di seguito il mio ragionamento per tentare di risolvere il problema in modo che possa aiutarvi a capire la sistuazione
Se non vi interessa seguirlo andate in fondo al topic e subito dopo i !!!!! c'è la domanda in breve :)
Grazie


Allego la parte di xml interessata

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<ScrollView  
     android:id="@+id/ScrollView01"  
     android:layout_height="150px"  
     android:layout_width="fill_parent"  
     android:layout_x="50dip"  
     android:layout_y="200dip"
     >  
           
      <TextView  
     android:id="@+id/in"  
     android:layout_height="100dip"  
     android:layout_width="100dip"  
     android:text="1\n2\n3"
      />  
</ScrollView>  

<TextView  
     android:id="@+id/out"  
     android:layout_height="100dip"  
     android:layout_width="100dip" android:text="1\n2\n3"
     />
</AbsoluteLayout>

Come vedete i due TextView sono assolutamente identici (il secondo "out" in effetti non mi serve...l'ho messo solo per discriminare il problema)

A questo punto ...in un OnClick di un pulsante che non ho citato nel xml qui sopra... vorrei semplicemente aggiungere una riga col numero 4 al textView "in"....
Non dà nessun errore ma non mi permette di farlo...

A questo punto ho messo il secondo textView ....e ...... col textView "out" mi permette di farlo

unica differenza tra i 2??? "in" è dentro lo ScrollLayout..."out" no

Analizzando meglio mi sono accorto che se invece di aggiungere una riga...(non la lunghezza ho verificato, bensì il numero di "\n")...gli assegno sempre col setText(charSequence) una stringa diversa dello stesso numero di righe....o un numero inferiore di righe....riesco a farlo con entrambi i textView

Inizio a mettere un po' di codice scrivendo quale funziona quale no.

Codice 1: aumento numero righe su textView "in" -------> Non succede niente
Codice (Java): [Seleziona]
public void onClick(View btn) {
        CharSequence c=((TextView)findViewById(R.id.in)).getText();
        ((TextView)findViewById(R.id.in)).setText(c+"\n4");
}

Codice 2: aumento numero righe su textView "out" ----------> Avviene il cambiamento aspettato
Codice (Java): [Seleziona]
public void onClick(View btn) {
        CharSequence c=((TextView)findViewById(R.id.out)).getText();
        ((TextView)findViewById(R.id.out)).setText(c+"\n4");
}

Codice 3: modifico righe senza aumentare il numero di esse su textView "in" (uguale se metto 1 o 2 righe in meno) -------> Avviene il cambiamento aspettato
Codice (Java): [Seleziona]
public void onClick(View btn) {
        //Con lo stesso numero di righe anche contenenti stringhe più lunghe
                   ((TextView)findViewById(R.id.in)).setText("1\n ciao\n4");
        // Con una riga in meno rispetto alla situazione di partenza
        //         ((TextView)findViewById(R.id.in)).setText("ciao\n4");
}


Quindi deduco che i textView dentro uno ScrollLayout non modificano il numero di righe tranquillamente
Penso che magari il textView si ingrandisce ma il layout lo Tronchi....quindi inserisco la seguente riga di codice che dovrebbe aumentare le dimensioni del layout in funzione dei view contenuti
Codice (Java): [Seleziona]
public void onClick(View btn) {
        CharSequence c=((TextView)findViewById(R.id.in)).getText();
        ((TextView)findViewById(R.id.in)).setText(c+"\n4");
        ((ScrollView)findViewById(R.id.ScrollView01)).computeScroll();
}
----------------> mi accorgo Debuggando che subito dopo l'istruzione "setText" il Text del textView è rimasto invariato

Quindi quello che avevo pensato era sbagliato...l'istruzione computeScroll() non fà al caso mio...almeno ...non da sola

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
C'è quindi una proprietà immagino del TextView "in" o della ScrollLayout che influenza il TextView contenuto impedendogli di aumentare di righe...

mi sapete aiutare??

Grazie 1000,
Gianni

PS: Scusate per il topic lungo ma ho scritto tutto il mio ragionamento per risolvere il problema in modo che magari vi possa aiutare .... ad aiutarmi :)

vincenzodicicco

  • Visitatore
Re:Aumentare numero righe TextView contenuto in un ScrollLayout
« Risposta #1 il: 02 Settembre 2010, 15:03:11 CEST »
0
Se ho ben capito il tuo quesito ovvero, "aggiungere una riga ad una edittext all'interno in un ScrollView alla pressione di un Button" non c'è cosa più semplice procedi cosi:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<ScrollView android:id="@+id/ScrollView01" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="1\n2\n3"
            android:id="@+id/txt"
            />
</ScrollView>
<Button android:text="pulsante" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
Codice (Java): [Seleziona]
        final EditText txt =(EditText) findViewById(R.id.txt);  // inizializzi l'edit text
        Button btn =(Button) findViewById(R.id.Button01);   // il pulsante
        btn.setOnClickListener(new OnClickListener() {       // il listener per catturare l'onClick
                        public void onClick(View v) {
                           txt.setText(txt.getText().toString() + "\n4");  //Aggiuge al testo gia presente del'edittext la stringa "\n4"
                        }
                });
Anzichè di usare il CharSequence io ho sempre utilizzato variabili di tipo String, aggiungendo "toString()" al metodo "getText()"  :-)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:Aumentare numero righe TextView contenuto in un ScrollLayout
« Risposta #2 il: 02 Settembre 2010, 15:53:02 CEST »
0
grazie per la risposta vincenzodicicco

Si nche io uso le stringhe nel mio codice vero....qui l'ho riportato con i CharSequence per rispettare i parametri del settext() :)

Come hai scritto te funziona benissimo anche a te

L'unica cosa è che io volevo usare i TextView.......il codice che dici te usa gli EditText



Ho trovato qual'è la proprietà che blocca la crescita del textView

devo mettere:
Codice (XML): [Seleziona]
android:layout_height="wrap_content"
invece che a una misura definita

Grazie a tutti
« Ultima modifica: 02 Settembre 2010, 16:01:49 CEST da giannign1 »

vincenzodicicco

  • Visitatore
Re:Aumentare numero righe TextView contenuto in un ScrollLayout
« Risposta #3 il: 02 Settembre 2010, 16:02:48 CEST »
0
Prova ad utilizzare lo stesso codice ma con una textview anzichè un edittext, dalla fretta non me ne ero accorto ad ogni modo funzionerà anche con la TextView  stanne certo  :-) :-) :-) :-)