2017-01-30 15 views
0

フォントのすばらしいアイコンを使用しようとしていて、何か問題があります。それはMainActivityから機能しましたが、私がフラグメントから使用するときにはアイコンを表示しません。(Android)font-awesome iconsが表示されない

これは私のHomeFragment

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View home = inflater.inflate(R.layout.fragment_home, container, false); 
    View feed_row = inflater.inflate(R.layout.feed_row, container, false); 

    like_button = (Button) feed_row.findViewById(R.id.like_button); 
    Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/fontawesome-webfont.ttf"); 
    like_button.setTypeface(tf); 

    mHomeFeed = (RecyclerView) home.findViewById(R.id.home_feed); 
    mLayoutManager = new LinearLayoutManager(this.getActivity()); 
    mHomeFeed.setHasFixedSize(true); 
    mHomeFeed.setLayoutManager(mLayoutManager); 

ですこれはfeed_row.xmlです:

<Button 
    android:id="@+id/like_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/icon_heart" 
    android:background="@color/noBackground"/> 

のstrings.xml

<string name="icon_heart">&#xf004;</string> 
<string name="icon_comment">&#xf0e5;</string> 

私は今、何をすべき?これは、エラーがなかったが、アイコンは以下のように見えた:使用する代わりに

this

答えて

0

常に( answerコメントのように)各アイコン用の新しい書体を作成するため、メモリの問題を持っている
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), 
             "fonts/fontawesome-webfont.ttf"); 

Calligraphyを使用できます。

<Button 
    android:id="@+id/like_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/icon_heart" 
    android:background="@color/noBackground" 
    fontPath="fonts/fontawesome-webfont.ttf"/> 
:フォントが唯一のXMLである場合あなたは、より柔軟なコードを持って

:あなたはライブラリを使用してアプリケーションを構成した後、あなただけのfontPath属性を追加する必要がある場合

0

あなたがクラスを作ることによって、これを行うと、この

public class AwesomeFontButton extends Button { 

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

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

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

    private void init() { 
     if (!isInEditMode()) { 
      Typeface tf = Typeface.createFromAsset(getContext().getAssets(), 
        "fontawesome-webfont.ttf"); //add your font path here 
      setTypeface(tf); 
     } 
    } 

} 

と、このようなXMLでそれを使用するようButtonクラスから、それを拡張することができます:

<YourFilePath.AwesomeFontButton 
    android:id="@+id/like_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/icon_heart" 
    android:background="@color/noBackground"/> 

あなたが

を必要な場所XMLでそれを使用します
関連する問題