Autore Topic: textview con background ridimensionabile  (Letto 953 volte)

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
textview con background ridimensionabile
« il: 10 Settembre 2010, 17:38:03 CEST »
0
vorrei poter creare un textview che come background mi alterni i colori fra le linee pari e dispari,credo che questa immagine possa aiutare a capire quello che voglio dire:

ora ho pensato che potrei creare un background su misura coi colori che mi interessano,ma il problema e che vorrei poter dare la possibilità di cambiare le dimensioni dei caratteri,perciò cambiando le dimensioni mi cambierà la grandezza delle linee e di conseguenza dovrei modificare anche l'immagine di background che altrimenti sarebbe sfalsata,ora una soluzione sarebbe quella di creare N background e legarli a N dimensioni possibili di caratteri,ma quello che mi chiedo è possibile possibile modificare dinamicamente l'immagine da codice affinché risulti centrata con le linee?
ho dato un occhio alle proprietà della textview ma non ho trovato niente di utile:
R.styleable | Android Developers
ahn il textview deve essere scrollable.Bye.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:textview con background ridimensionabile
« Risposta #1 il: 10 Settembre 2010, 17:48:28 CEST »
0
Quello che vuoi fare non mi sembra adatto ad una singola TextView, quanto più ad una ListView o al massimo ad un TabLayout dentro una ScrollView.

Dai uno sguardo ai relativi tutorial sulla doc:
List View | Android Developers
Table Layout | Android Developers
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:textview con background ridimensionabile
« Risposta #2 il: 10 Settembre 2010, 19:05:53 CEST »
0
ho dato un occhio ai link,e da quanto ho capito dovrei spalmare il testo che dovrei mostrare nella textview in più textview separati e gestirli poi tramite listview o table layout,in pratica ogni linea verrebbe mostrata su di un singolo textview,mi sembra un po laborioso,supponi di avere una 70-ina di righe da far vedere dovresti creare una 70-ina di textview per mostrarle?   :-o
non c'è un modo per rendere più leggibile il contenuto di textview?sarei intenzionato anche a cambiare il colore soltanto ad alcune parole chiave all'interno del textview,questo è possibile?
grazie per il supporto.Bye.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:textview con background ridimensionabile
« Risposta #3 il: 10 Settembre 2010, 19:08:58 CEST »
0
sarei intenzionato anche a cambiare il colore soltanto ad alcune parole chiave all'interno del textview,questo è possibile?

Common Tasks and How to Do Them in Android | Android Developers

Comunque quoto quanto detto da JD, se ti serve ottenere un risultato come quello in figura l'unica è utilizzare una ListView.

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:textview con background ridimensionabile
« Risposta #4 il: 10 Settembre 2010, 19:26:44 CEST »
0
forse dal link che mi hai fornito risolvo,infatti uno degli attributi che si possono modificare del testo è BackgroundColorSpan,faccio qualche test,grazie.Bye.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:textview con background ridimensionabile
« Risposta #5 il: 11 Settembre 2010, 13:19:51 CEST »
0
Hai risolto? Facci sapere e in caso marca il thread premendo il pulsante qui sotto
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:textview con background ridimensionabile
« Risposta #6 il: 12 Settembre 2010, 10:36:25 CEST »
+1
ne ho trovato una,ma non sono pienamente soddisfatto  :-\ ,più avanti faccio dei test con la listview comunque metto risolto.
la soluzione che ho usato è piuttosto grezza,usa la proprietà spannable del textview per poter cambiare lo stile ad una parte di esso,questo è il risultato:

ecco il codice:
Codice (Java): [Seleziona]
       String string = "";                <---- here the text to show
        //find the max line length
        int maxlenghtline=0,index=0,start=0;
        while ((index=string.indexOf('\n', start))!=-1){
            if((index-start)>maxlenghtline)
                maxlenghtline=index-start;
            start=index+1;
        }
       
        //for font not monospaced use this trick
        maxlenghtline=maxlenghtline*2;
       
        //modify string with adding space
        index=0;start=0;
        StringBuffer strtemp = new StringBuffer(string);
       
        while ((index=string.indexOf('\n', start))!=-1){
            int lenghtline=index-start;
            while(lenghtline<maxlenghtline){
                strtemp.insert((start+(lenghtline)),' ');
                lenghtline++;
            }
            string=strtemp.toString();
            start=start+maxlenghtline+1;
        }
        index=string.lastIndexOf('\n');
        int lenghtline=string.length()-index;
        while(lenghtline<maxlenghtline){
            strtemp.insert((index+lenghtline),' ');
            lenghtline++;
        }
        string=strtemp.toString();
       
        vw.setText(string=strtemp.toString(),TextView.BufferType.SPANNABLE);
       
        // Get the textview internal text storage
        Spannable str =  (Spannable) vw.getText();

        //cycle to divide the text
        start=0;
        int temp=0;
        boolean pair=false;
        while ((temp=string.indexOf('\n', start))!=-1){
            str.setSpan(new ForegroundColorSpan(Color.BLACK), start, temp, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            if (pair==false) {
                str.setSpan(new BackgroundColorSpan(Color.LTGRAY), start, temp, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                start=temp+1;
                pair=true;
            }
            else{
                str.setSpan(new BackgroundColorSpan(Color.GRAY), start, temp, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                start=temp+1;
                pair=false;
            }
        }
        str.setSpan(new ForegroundColorSpan(Color.BLACK), start,  str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        if(pair==false)
            str.setSpan(new BackgroundColorSpan(Color.LTGRAY), start, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        else
            str.setSpan(new BackgroundColorSpan(Color.GRAY), start, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

questo è il layout:
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"
   >
<TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/str_label"
   android:paddingBottom="5dip"
   />
    <HorizontalScrollView
   android:id="@+id/HorizontalScrollView01"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
    <ScrollView
       android:id="@+id/ScrollView01"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
<TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/str_label_test"
   android:id="@+id/text_test"
   android:lineSpacingExtra="2dip"
   />
    </ScrollView>
</HorizontalScrollView>

</LinearLayout>
il limte di questa soluzione è che nel caso si usi un carattere non monospaced le linee non termineranno allo stesso punto pur essendo composte dallo stesso numero di caratteri.Bye.