我已经尝试了在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”
那是因为你没有任何 itemView 。
itemView
首先,更换:
Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/typefaceone.ttf");
使用:
Typeface customTypeOne;
然后,在你的 ViewHolder 构造函数,在底部添加:
ViewHolder
customTypeOne = Typeface.createFromAsset(this.title.getContext().getAssets(), "fonts/typefaceone.ttf");
现在您正在呼叫 getContext() 在存在的东西上。
getContext()