Il Forum è consultabile solo in modalità lettura. Per domande o consigli iscriviti al nostro GRUPPO FACEBOOK / COMMUNITY cliccando qui

Problema visualizzazione testo in TextView

Discussione in 'Development' iniziata da Puck, 3 Nov 2012.

  1. Puck

    Puck Baby Droid

    Iscritto:
    3 Nov 2012
    Messaggi:
    4
    "Mi Piace":
    0
    Salve a tutti,

    sto sbattendo la testa con un problema che a me sembra irrisolvibile (forse x mia ignoranza).

    Ho un textview con una linea nel quale quando scrivo una stringa, mi calcolo lo spazio disponibile e se necessario riduco il size del font fino ad una dimensione minima impostata, dopodichè aggiungo una linea e continuo a scrivere.

    Se scrivo solamente numeri (l'applicazione è una calcolatrice) tutto va bene e quando aggiungo la linea il testo va accapo correttamente reimpiendo la prima linea completamente e proseguendo sulla seconda.

    Quando scivo anche gli operatori (+, -, /, x), se nel testo c'è uno slash seguito da un altro operatore es.("65537/(763647)+737") allora la prima riga mi si tronca dopo lo slash e lo stesso avviene con il meno es.("65537-(763647)+737").

    Non riesco a vanirne a capo.

    Potete darmi un consiglio?
     
  2. Morissio

    Morissio Guest

    R: Problema visualizzazione testo in TextView

    Devi scrivere nelle sezione development. Questa volta ti sposto il thread ;)

    Inviato dal mio HTC EVO 3D X515m con Tapatalk 2
     
  3. Puck

    Puck Baby Droid

    Iscritto:
    3 Nov 2012
    Messaggi:
    4
    "Mi Piace":
    0
    Grazie,

    scusami.
     
  4. acer1629

    acer1629 Worker Droid

    Iscritto:
    22 Ago 2012
    Messaggi:
    113
    "Mi Piace":
    22
    Prova a postare il codice che hai usato per fare i vari ragionamenti sulla textview e proviamo a capire :)
     
  5. Puck

    Puck Baby Droid

    Iscritto:
    3 Nov 2012
    Messaggi:
    4
    "Mi Piace":
    0
    Nel file “activity_main.xml†ho un custom component che riporto di seguito:


    <LinearLayout android:id="@+id/mainLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:eek:rientation="vertical" android:layout_alignParentTop="true">

    * <com.example.component.NumTextView
    android:id="@+id/textViewInput"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:gravity="right"
    android:maxHeight="64dp"
    android:minHeight="64dp"
    app:lines="1"
    app:maxLines="3"
    app:mintextsize="16"
    app:maxtextsize="48"
    android:padding="0dp"
    android:scrollbars="vertical"
    android:singleLine="false" android:text="" />

    * <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#000000" />

    Nella classe “NumTextView†che eredita da “TextView†ho il seguente codice:

    private void refitText(String text, int textWidth)
    {
    float trySize = 23;
    if( textWidth > 0 )
    {
    int lineCount = this.getLineCount();
    this.setLines(lineCount + 1);
    this.setVerticalScrollBarEnabled(true);
    this.setMovementMethod(ScrollingMovementMethod.getInstance());
    this.setTextSize(trySize);
    }
    }


    @Override
    protected void onTextChanged(final CharSequence text, final int start, final int before, final int after)
    {
    refitText( text.toString(), this.getWidth() );
    }

    Infine nel “MainActivity†ho il seguente codice:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textInput = (NumTextView) findViewById(R.id.textViewInput);
    }

    public void onClick1(View v)
    {
    String stringa ="56688-(555556565555566555555";
    textInput.setText(stringa);
    }

    public void onClick2(View v)
    {
    String stringa ="56688+(555556565555566555555";
    textInput.setText(stringa);
    }

    public void onClick3(View v)
    {
    String stringa ="56688x(555556565555566555555";
    textInput.setText(stringa);
    }

    public void onClick4(View v)
    {
    String stringa ="56688/(555556565555566555555";
    textInput.setText(stringa);
    }


    PROBLEMA:

    Scrivendo le stringhe dei bottoni 2 e 3, in visualizzazione le linee del TextView vengono compilate correttamente:
    la prima linea è completa e il resto della stringa va sulla seconda linea.
    ES.:
    56688+(555556565555566
    555555

    56688x(555556565555566
    555555

    Scrivendo le stringhe dei bottoni 1 e 4, in visualizzazione le linee del TextView vengono compilate non correttamente:
    la prima linea è riempita fino al carattere '/' oppure '-' rimanendo in gran parte vuota, mentre il testo successivo al carattere viene scritto sulla seconda linea.
    ES.:
    56688/
    (555556565555566555555

    56688-
    (555556565555566555555


    Il comportamento voluto è quello delle stringhe dei bottoni 2 e 3.

    Non riesco a capire perchè si comporta in maniera anomala in presenza dei caratteri '/' e '-', e come fare per ovviare a questa anomalia.

    Ogni suggerimento è apprezzato.

    Grazie
     
  6. acer1629

    acer1629 Worker Droid

    Iscritto:
    22 Ago 2012
    Messaggi:
    113
    "Mi Piace":
    22
    Ho provato a farci una pensata e un pò di ricerche online e sinceramente non me lo spiego.
    Non sono dei caratteri speciali ... per cui non capisco perchè il risultato sia diverso dal X e dal +.
    L'unica cosa che posso consigliarti è fare un debug passo per passo e capire qualche valore e in che punto cambia in modo da fare ricerche più mirate ... non ho possibilità di testare al momento, altrimenti provavo io a fare un run per capirci di più. :(
     
  7. Puck

    Puck Baby Droid

    Iscritto:
    3 Nov 2012
    Messaggi:
    4
    "Mi Piace":
    0
    Già, non me lo spiego neanche io....

    Comunque grazie per l'interessamento.

    Se dovesse venirti in mente qualcosa fammi sapere.