【问题标题】:Can't set custom typeface inside ViewHolder无法在 ViewHolder 中设置自定义字体
【发布时间】:2018-04-29 20:28:07
【问题描述】:

我已经尝试了可以​​在 stackoverflow 上找到的所有方法,但似乎没有任何效果。

问题是我无法更改 CardViewLayout 中任何 TextView 的字体。

我尝试过字体系列,xml 中的文本外观 我已经通过这样做进行了更改,但我收到错误 无法解析符号'itemView'

代码:

public class cardAdapter extends ArrayAdapter<cardModel> {

public cardAdapter(Context context) {
    super(context, 0);
}

@Override
public View getView(int position, View contentView, ViewGroup parent) {
    ViewHolder holder;

    if (contentView == null) {
        LayoutInflater inflater = LayoutInflater.from(getContext());
        contentView = inflater.inflate(R.layout.card_layout, parent, false);
        holder = new ViewHolder(contentView);
        contentView.setTag(holder);
    } else {
        holder = (ViewHolder) contentView.getTag();
    }

    cardModel spot = getItem(position);

    holder.title.setText(spot.title);
    holder.description.setText(spot.description);
    Glide.with(getContext()).load(spot.url).into(holder.image);

    return contentView;
}

private static class ViewHolder {

    public TextView title;
    public TextView description;
    public ImageView image;

    Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/typefaceone.ttf");

    public ViewHolder(View view) {
        this.title = (TextView) view.findViewById(R.id.title);
        title.setTypeface(customTypeOne);
        this.description = (TextView) view.findViewById(R.id.description);
        this.image = (ImageView) view.findViewById(R.id.image);
        }
    }
}

【问题讨论】:

  • itemView 是在哪里声明的?
  • 我试图在公共 ViewHolder 中声明它,我得到了错误释放,但是当我启动应用程序时它崩溃了。
  • edit您的问题包括您的尝试和完整的错误消息。

标签: java android xml android-layout android-viewholder


【解决方案1】:

但我收到错误无法解析符号“itemView”

那是因为你没有任何名为 itemView 的东西。

首先,替换:

Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/typefaceone.ttf");

与:

Typeface customTypeOne;

然后,在您的 ViewHolder 构造函数中,在底部添加:

customTypeOne = Typeface.createFromAsset(this.title.getContext().getAssets(), "fonts/typefaceone.ttf");

现在您正在调用 getContext() 来处理存在的问题。

【讨论】:

  • 我正要编辑问题中的代码,我已经这样做了,但是当我启动活动时,它崩溃了
  • @newbieCoder.pkg:然后使用 LogCat 检查与您的崩溃相关的 Java 堆栈跟踪:stackoverflow.com/questions/23353173/…
  • 嗯,错误是找不到字体资源。这样就很容易了:)。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2014-06-16
  • 2014-09-11
  • 2021-06-03
  • 1970-01-01
  • 2015-04-01
  • 2012-11-22
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多