Dimensione testo TextView

di il
22 risposte

Dimensione testo TextView

Salve a tutti. Ho un problema con la TextView. Praticamente ho impostato il valore di textSize (utilizzo Android Studio) a 15. Poi ho inserito due bottoni, uno per ingrandire e uno per diminuire. Il problema sta quando premo il bottone per ingrandire e poi quello per diminuire, posso modificare solo una volta la grandezza. Spero di essermi spiegato bene e che mi possiate aiutare, grazie in anticipo a tutti.
Posto la parte del codice interessato:

        Button tp=(Button) findViewById(R.id.button2);
        Button tm=(Button) findViewById(R.id.button3);
        final TextView y=(TextView) findViewById(R.id.punto);
        final float dt = y.getTextSize();
        tm.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    y.setTextSize(dt - 1);
                }
            });
        tp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    y.setTextSize(dt + 1);
                }
            });

22 Risposte

  • Re: Dimensione testo TextView

    Il metodo getTextSize deve essere chiamato dentro al listener o, equivalentemente, quando fai la setTextSize devi aggiornare opportunamente anche la variabile "dt", altrimenti quest'ultima viene calcolata solo 1 volta all'inizio, quindi conterrà sempre il valore iniziale (15)


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    Ho modificato ma funziona solo il tasto +, quando voglio diminuire il testo aumenta
    
            Button tp=(Button) findViewById(R.id.button2);
            Button tm=(Button) findViewById(R.id.button3);
            final TextView y=(TextView) findViewById(R.id.punto);
            tm.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dt = y.getTextSize();
                        y.setTextSize(dt - 1);
    
                    }
                });
            tp.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dt=y.getTextSize();
                        y.setTextSize(dt + 1);
                    }
                });
  • Re: Dimensione testo TextView

    Scusa ma dt dove l'hai definito?


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    Prima del metodo oncreate altrimenti mi dice di metterlo final ma mettendolo final mi da un errore
  • Re: Dimensione testo TextView

    In realtà puoi anche crearlo inline: int dt = y.getTextSize();
    Comunque il resto del codice così ad occhio mi sembra giusto


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    Niente non va
  • Re: Dimensione testo TextView

    Problema risolto leggendo la !

    In pratica il metodo "getTextSize()" restituisce la dimensione in pixel, mentre il metodo "setTextSize(float)" prende una dimensione in "scale point", che è un'unità di misura diversa. Per risolvere il problema puoi usare il metodo "setTextSize(int, float)", in cui il primo parametro prende è un intero che indica l'unità di misura del secondo parametro.
    Tradotto in codice:
    
    tp.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				float size = tv.getTextSize();
    				tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, size+1); // indico che la dimensione è in pixel
    			}
    		});
    		
    		tm.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				float size = tv.getTextSize();
    				tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, size-1); // indico che la dimensione è in pixel
    			}
    		});
    
  • Re: Dimensione testo TextView

    Ho provato come dici, non dà errori ma l'app quando l'avvio sul telefono per testarla crasha e non parte.
  • Re: Dimensione testo TextView

    Che errore ti da il LogCat? Quel codice l'ho provato sul pc, dovrebbe andare senza problemi


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    Dice che l'applicazione non risponde. E si arresta.
  • Re: Dimensione testo TextView

    No ma posta proprio il LogCat, se no non si capisce nulla


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mio.test/com.mio.test.MainActivity}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
    at android.app.ActivityThread.access$700(ActivityThread.java:159)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:5419)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.NullPointerException
    at android.app.Activity.findViewById(Activity.java:1914)
    at com.mio.test.MainActivity.<init>(MainActivity.java:24)
    at java.lang.Class.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1130)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                at android.app.ActivityThread.access$700(ActivityThread.java:159)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:176)
                at android.app.ActivityThread.main(ActivityThread.java:5419)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:525)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                at dalvik.system.NativeStart.main(Native Method)
  • Re: Dimensione testo TextView

    Alla riga 24 della MainActivity tenti di accedere ad una variabile che è nulla.


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Dimensione testo TextView

    Funziona! Grazie! Alla riga 24 avevo fatto un errore, comunque va, grazie ancora!
Devi accedere o registrarti per scrivere nel forum
22 risposte