【问题标题】:font awesome in android list view not workingandroid列表视图中的字体真棒不起作用
【发布时间】:2014-01-29 19:41:34
【问题描述】:

所以我创建了这个自定义数组适配器:

        View row = convertView;
        ViewHolder holder;
        iconFont = Typeface.createFromAsset(activity.getAssets(), "fontawesome-webfont.ttf" );

        if (row == null) 
        {
            LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = layoutInflater.inflate(R.layout.event_type_list_row, null);
            holder = new ViewHolder();
            holder.icon = (TextView) row.findViewById(R.id.EventTypeListRow_icon_EditText);
            holder.name = (TextView) row.findViewById(R.id.EventTypeListRow_name_EditText);
            row.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) row.getTag();
        }
        final EventTypeDataObj eventType = data.get(position);
        if (eventType != null) 
        {
            //holder.icon.setText(eventType.getIconCode()); f02c;
            holder.icon.setText("");
            holder.icon.setTypeface(iconFont);
            holder.name.setText("");
            holder.name.setTypeface(iconFont);
        }

        return row;

我没有看到我的缺点,我在列表视图中看到代码,如下所示:

注意: 其他字体(适用于字母而非图标)。正在工作。

它不工作有什么原因吗?

【问题讨论】:

  • 使用 HTML.fromHtml 之类的?
  • 你能举个例子吗?
  • 或者你的字符串不应该是"\uf001"

标签: java android listview fonts


【解决方案1】:


显然是一个 XML 实体。我没有理由相信android应该这样对待,而不是简单的字符串。鉴于您的屏幕截图,显然它确实如此。

如果你想通过给出它们的unicode值来指定字符,在java中正确的用法是\u,像这样:

holder.name.setText("\uf001");

编辑

如果您的输入是"&#f001;" 并且不能被"\uf001" 替换,也可以使用Html.fromHtml 来解码字符串中的XML 实体:

holder.name.setText(Html.fromHtml("&#f001;"));

【讨论】:

  • 我有<string name="list_icon"></string>,当我这样做时holder.icon.setText(activity.getResources().getString(R.string.list_icon)); 它工作得很好!也许我需要将字符串格式化为 utf-8
  • 是的,因为string.xml是xml文件,xml解析解析xml实体,textView不解析。
  • utf-8跟这个无关,这些是unicode值,utf-8是一种表示。
  • 只需使用 java \u 表示法,就像我在 Java 代码中使用这些字符时发布的示例一样。
  • 先验,setText(Html.fromHtml("&#f001;")); 可以工作,虽然我还没有测试过。
【解决方案2】:

将字体很棒的字符串放在您的strings.xml 中,并使用getString(R.string.whatever) 引用它们。然后,Android 将为您处理 Unicode 格式。

【讨论】:

  • 当我在不是列表视图行的静态视图中手动添加字符串时,我正在像这样工作,但我从数据库中获取此图标代码...
猜你喜欢
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2020-04-04
  • 2016-03-22
相关资源
最近更新 更多