2016-02-08 23 views
5

Czy można używać ikony czcionki w selektorze zamiast w trybie rysowania?Jak używać ikony czcionki (font-awesome) w selektorze kodu 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> 

Odpowiedz

4

Zmieniłem kolor tekstu w selektorze zamiast w losowaniu. Działa dobrze.

Tworzenie klasy MyTextView która rozciąga 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); 
    } 
} 

Tworzenie text_color_selector.xml selektor

<?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> 

a następnie używać go w wy układ

<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

Można używać czcionek-niesamowite ikony następująco:

1 - Skopiuj plik czcionki-niesamowite do katalogu aktywów

2 - znaleziono podmioty charakter ikon chciałem, używając this strona

3 - Utwórz wpis w pliku strings.xml dla każdej ikony. Np:

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

4 - Załaduj czcionki w metodzie onCreate i ustawić go na odpowiednich Wyświetleń:

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

Nie zapomnij odwoływać ciąg w polu widzenia.

sprawdź link this, aby uzyskać więcej informacji.

nie można go użyć jako selektora. ale możesz dynamicznie zmieniać ikony.

+0

Dzięki za odpowiedź, ale chcę użyć w selektorze zamiast prostej ikony –

+0

, która nie jest możliwa, ponieważ jest to czcionka (tekst). – droidev

1

Najłatwiej!

Od biblioteki Android Support 26 i Android Studio 3.0 możesz korzystać z obsługi czcionek natywnych w XML.

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

  1. Tworzenie katalogu czcionek w katalogu res
  2. skopiować plik czcionki do katalogu czcionek
  3. Utwórz nowy plik zasobów czcionki pobliżu pliku czcionki

    <?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> 
    

    Zastosowanie android:font dla API 26 i app:font dla interfejsu API wsparcia od 14.

  4. Teraz można użyć fontFamily w TextView:

    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:fontFamily="@font/font_awesome" 
        android:text="\uF0da" /> 
    
  5. Aby wstawić font-niesamowite char wpisać jej kod UTF z \u

UWAGA: Android Studio projektowe podgląd robi” t wyświetla czcionkę o niesamowitej strukturze, ale w aplikacji działa poprawnie.

Powiązane problemy