2017-01-30 38 views
0

我想用字體很棒的圖標,並有一些問題。它從MainActivity起作用,但是當我從Fragment使用它時沒有顯示圖標。(Android)字體很棒的圖標不顯示

這是我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

而不是使用:

Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), 
             "fonts/fontawesome-webfont.ttf"); 

其中有記憶的問題,因爲不斷創造每個圖標一個新的字體(如answer評論)你可以使用Calligraphy。當你已經配置了庫應用程式後,您只需要添加fontPath屬性:

讓你有一個更靈活的代碼,其中的字體只能在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" 
    fontPath="fonts/fontawesome-webfont.ttf"/> 
0

您可以通過一個類來完成這一點,它從Button類擴展這樣

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:

<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中,無論你需要