Autore Topic: cambio font di una scritta  (Letto 1947 volte)

Offline slasher

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore ADT :-D
  • Sistema operativo:
    Windows Vista (purtroppo) \ Linux Ubuntu
cambio font di una scritta
« il: 01 Febbraio 2011, 16:48:17 CET »
0
Come da oggetto volevo cambiare proprio il carattere di una scritta. Ho visto che posso fare una cosa del genere (avendo messo prima il ttf in assets)

Codice (Java): [Seleziona]
                Typeface myTypeface = Typeface.createFromAsset(this.getAssets(),"CHILLER.TTF");
                TextView titolo = (TextView) findViewById(R.id.Titolo);
                titolo.setTypeface(myTypeface);

però una cosa è cambiarlo in questo modo a una sola parola. Io volevo cambiarlo in blocco a diverse scritte che avessero tutte uno stesso stile. L'idea era quindi di fare un XML di "stile" tipo

Codice (XML): [Seleziona]
<resources>
    <style name="mio_stile">
    <item name="android:textColor">#00FF00</item>
    <item name="android:testSize">20sp</item>
</resources>

e quindi aggiungere il carattere preso da un ttf in modo che nell'XML di layout posso applicare facilmente il mio stile a tutte le TextView che voglio.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:cambio font di una scritta
« Risposta #1 il: 01 Febbraio 2011, 17:34:50 CET »
0
In android non puoi specificare il typeface da xml.

Quello che puoi fare è estendere la classe TextView e impostare il typeface nel costruttore, dopo aver chiamato super(...)

Poi "usi" la tua nuova classe nell xml

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:cambio font di una scritta
« Risposta #2 il: 11 Febbraio 2011, 12:41:56 CET »
0
Siccome mi sono trovato ad installare un font personalizzato ho provato ad usare la soluzione di Qlimaxma non mi funziona, mi viene dato quest'errore:

02-11 11:33:46.401: ERROR/AndroidRuntime(427): Caused by: java.lang.NoSuchMethodException: MyTextView(Context,AttributeSet)

alla riga
02-11 11:33:46.401: ERROR/AndroidRuntime(427):     at it.demo.Istruzioni.onCreate(Istruzioni.java:21)

Allego il codice di MyTextView:
Codice (Java): [Seleziona]
package it.demo;

import android.content.Context;
import android.graphics.Typeface;
import android.widget.TextView;

public class MyTextView extends TextView {

        public MyTextView(Context context) {
                super(context);
                Typeface tf = Typeface.createFromAsset(context.getAssets(),
                                "fonts/HelveticaRoundedLTStd-Bd.otf");
                setTypeface(tf);
        }

}

Allego il codice di istruzioni.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent">

    <it.demo.MyTextView
       android:id="@+id/istruzioni_text_view_c"
       android:layout_below="@+id/istruzioni_text_view_1"
       android:layout_height="wrap_content"
       android:layout_width="wrap_content"
       android:layout_marginLeft="15dip"
       android:layout_marginRight="15dip"
       android:layout_marginTop="15dip"
       android:textSize="18dip"
       android:textColor="@color/titolo"
       android:textStyle="bold"  
       android:text="Istruzioni Custom" />
       

</RelativeLayout>
N.B. se non metto it.demo.MyTextView  nel file istruzioni.xml, ma metto solo MyTextView  quando eseguo l'app mi dice che non conosce la classe MyTextView

Codice (Java): [Seleziona]
import android.app.Activity;
import it.demo.MyTextView;

public class Istruzioni extends Activity {

        private Context context;

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.istruzioni);               <- riga 21
        }
}
« Ultima modifica: 11 Febbraio 2011, 13:00:30 CET da andream1977 »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:cambio font di una scritta
« Risposta #3 il: 11 Febbraio 2011, 15:24:36 CET »
+1
Aggiungi un altro costruttore
Codice (Java): [Seleziona]
MyTextView(Context c,AttributeSet a){
       super(c,a);
}

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:cambio font di una scritta
« Risposta #4 il: 11 Febbraio 2011, 16:41:58 CET »
0
Ricky ha funzionato quindi la classe MyTextView deve avere questo codice
Codice (Java): [Seleziona]
public class MyTextView extends TextView {

        public MyTextView(Context context) {
                super(context);
                setFont(context);

        }

        public MyTextView(Context context, AttributeSet attributeSet) {
                super(context, attributeSet);
                setFont(context);
        }
       
        private void setFont(Context context) {
                Typeface tf = Typeface.createFromAsset(context.getAssets(),
                                "fonts/HelveticaRoundedLTStd-Bd.otf");
                setTypeface(tf);
                setTextColor(Color.GREEN);
        }
}

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:cambio font di una scritta
« Risposta #5 il: 13 Febbraio 2011, 12:49:02 CET »
0
Come provo a mettere un colore al font, viene perso lo stile del font
Codice (Java): [Seleziona]
private void setFont(Context context) {
                Typeface tf = Typeface.createFromAsset(context.getAssets(),
                                "fonts/HelveticaRoundedLTStd-Bd.otf");
                setTypeface(tf);
                setTextColor(Color.GREEN);
        }
con questo codice mi visualizza il testo in verde ma perde lo stile dato da HelveticaRoundedLTStd-Bd.otf
se invece tolgo l'istruzione
setTextColor(Color.GREEN);
riappare lo stile ma perdo il colore, la scitta viene fatta vedere con il colore di default di android
come faccio a far vedere una scritta con un font personalizzato e del colore da me scelto? devo forse scaricarmi un font già colorato?
« Ultima modifica: 13 Febbraio 2011, 12:57:21 CET da andream1977 »