【问题标题】:How can I add 'FontAwesome' icon on Android Action Toolbar Menu?如何在 Android 操作工具栏菜单上添加“FontAwesome”图标?
【发布时间】:2016-09-28 00:10:06
【问题描述】:

是否可以使用 FontAwesome 在 ActionBar "Text" 中设置图标?

我已经尝试过这种方式...

我的菜单项就是这样..

   <item
     android:id="@+id/action_chat"
     android:orderInCategory="100"
     android:title="@string/action_chat"
     app:showAsAction="always"
     android:actionLayout="@layout/chat_menu_icon"/>

我的“chat_menu_icon.xml”

   <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="horizontal"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">

   <com.bitmakers.techmonster.textview.FontAusomeTextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:autoLink="web"
         android:id="@+id/test"
         android:gravity="center|bottom"
         android:text="@string/action_chat"
         android:textSize="24sp"
         android:textStyle="bold" />
   </LinearLayout>

我的自定义字体类

    package com.bitmakers.techmonster.textview;

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

    public class FontAusomeTextView extends TextView {
         public static Typeface m_typeFace = null;

         public FontAusomeTextView(Context context) {
         super(context);
         // TODO Auto-generated constructor stub
         if (isInEditMode()) {
              return;
         }
         loadTypeFace(context);
     }

     public FontAusomeTextView(Context context, AttributeSet attrs) {
         super(context, attrs);
         if (isInEditMode()) {
              return;
          }
          loadTypeFace(context);
      }

      public FontAusomeTextView(Context context, AttributeSet attrs, int   defStyle) {
           super(context, attrs, defStyle);
           if (isInEditMode()) {
           return;
           }
           loadTypeFace(context);
       }

       private void loadTypeFace(Context context) {
           if (m_typeFace == null)
                m_typeFace = Typeface.createFromAsset(context.getAssets(),
                "fonts/fontawesome-webfont.ttf");
                this.setTypeface(m_typeFace);
       }
    }

当我在普通文本视图中使用它时它正在工作

【问题讨论】:

标签: android android-layout fonts


【解决方案1】:

您可以使用名为 android-iconify 的不错的库来实现您的目标。

这是在工具栏/操作栏项目上实现它的方法:

your_menu_layout.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"

   <item
       android:id="@+id/item_settings"
       showAsAction="ifRoom"
       android:title="@string/title"/>

</menu>

在您的 onCreateOptionsMenu 方法中:

menu.findItem(R.id.item_settings).setIcon(
new IconDrawable(this, FontAwesomeIcons.fa_cog)
    .colorRes(R.color.your_color)
    .actionBarSize());

你很高兴:)

【讨论】:

  • FontAwesomeIcons 是从哪里来的
  • FontAwesomeIcons 是所有图标都具有常量值的类。使用时会导入其静态命名空间。
  • 朋友,您有该课程的完整示例吗?谢谢
  • 请参考我回答中的库链接。您将找到有关如何实现它的有用且全面的教程。
  • 谢谢@blueware 我的问题是我不知道如何创建 FontAwesomeIcons 助手类或导入它...这是我可悲的问题:(
【解决方案2】:

使用自定义ActionBar

创建您自己的布局并使用

将其包含在 xml
<include.../> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多