2016-02-08 12 views
5

È possibile utilizzare l'icona del carattere nel selettore anziché disegnabile?Come utilizzare l'icona del carattere (font-awesome) nel selettore XML

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/menu_home_press" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/menu_home"></item> 
</selector> 

risposta

4

Ho cambiato il colore del testo nel selettore invece che nel drawable. È funzionante.

Creare classe MyTextView che si estende TextView

public class MyTextView extends TextView { 

    public MyTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(context); 
    } 

    public MyTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public MyTextView(Context context) { 
     super(context); 
     init(context); 
    } 

    private void init(Context context) { 
     Typeface tf = Typeface.createFromAsset(context.getAssets(), 
       "fontawesome-webfont.ttf"); 
     setTypeface(tf); 
    } 
} 

Crea text_color_selector.xml selettore

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="#ff0000" android:state_pressed="true" /> 
    <!-- pressed --> 
    <item android:color="#ff0000" android:state_focused="true" /> 
    <!-- focused --> 
    <item android:color="#000000" /> 
    <!-- default --> 
</selector> 

e quindi utilizzarlo in voi il layout

<com.example.mohsin.myapplication.MyTextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="50sp" 
     android:clickable="true" 
     android:textColor="@drawable/text_color_selector" 
     android:text="\uF242"> 

    </com.example.mohsin.myapplication.MyTextView> 
1

È possibile utilizzare le icone dei font-impressionante come segue:

1 - Copiare file del font font-impressionante nella directory di beni

2 - Abbiamo trovato le entità carattere per le icone che volevo, utilizzando this pagina

3 - Creare la voce in string.xml per ogni icona. Ad esempio:

<string name="icon_eg">&#xf13d;</string> 

4 - caricare il font in modo onCreate e impostarlo per le opportune Visualizzazioni:

Typeface font = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf"); 
... 
Button button = (Button)findViewById(R.id.like); 
button.setTypeface(font); 

Non dimenticare di fare riferimento alla stringa in vista.

<Button 
    android:id="@+id/my_btn" 
    style="?android:attr/buttonStyleSmall" 
    ... 
    android:text="@string/icon_eg" /> 

controllo this link per maggiori informazioni.

non è possibile utilizzarlo come selettore. ma puoi cambiare dinamicamente le icone.

+0

Grazie per la tua risposta, ma voglio usare nel selettore invece dell'icona semplice –

+0

che non è possibile, poiché è font (testo). – droidev

1

Il modo più semplice!

Da Android Support Library 26 e Android Studio 3.0 è possibile utilizzare il supporto dei caratteri nativi in ​​XML.

https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

  1. Creare directory dei font nella cartella res
  2. file dei font copia nella directory dei font
  3. Creare un nuovo file di risorse di carattere nei pressi di file di font

    <?xml version="1.0" encoding="utf-8"?> 
    <font-family xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto"> 
        <font 
         android:font="@font/font_awesome_font" 
         android:fontStyle="normal" 
         android:fontWeight="400" 
         app:font="@font/font_awesome_font" 
         app:fontStyle="normal" 
         app:fontWeight="400" /> 
    </font-family> 
    

    Usa android:font per API 26 e app:font per l'API di supporto dal 14.

  4. Ora è possibile utilizzare fontFamily in TextView:

    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:fontFamily="@font/font_awesome" 
        android:text="\uF0da" /> 
    
  5. Per inserire font-impressionante char entrarvi codice UTF con \u

NOTA: Studio Android disegno anteprima doesn' t mostra font-awesome char ma nell'applicazione funziona correttamente.

Problemi correlati