android - 在 RecyclerView 适配器中设置自定义字体

标签 android fonts android-adapter

我有一个加载 RecyclerView 的 fragment ,但我想将自定义字体添加到 RecyclerView 的一个项目中的 TextView。我应该在我的适配器中的什么位置设置字体?另外我究竟如何设置字体?

我不能使用这个代码,

Typeface font = Typeface.createFromAsset((getAssets(),
            "myfont.ttf");

因为我不在 Activity 中。那么我该如何获取字体呢?

这是我的适配器,

public class DiscoverRecyclerAdapter
        extends RecyclerView.Adapter<DiscoverRecyclerAdapter.ViewHolder> {

    private String[] mDataset;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mText;
        public ViewHolder(android.support.v7.widget.CardView v) {
            super(v);
            mText = (TextView) v.findViewById(R.id.text);
        }
    }

    public DiscoverRecyclerAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

    @Override
    public DiscoverRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_discover, parent, false);
        ViewHolder vh = new ViewHolder((android.support.v7.widget.CardView)v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mText.setText(mDataset[position]);
    }

    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}

我应该在适配器中的什么位置设置字体以及如何设置字体?

最佳答案

Where in my adapter should I set the font?

onCreateViewHolder() 或您的 ViewHolder 构造函数中。

So how should I get the font?

有了那个代码。在 Activity(或 fragment ,如果 RecyclerView 在 fragment 中)中创建 Typeface。将 Typeface 传递给 DiscoverRecyclerAdapter。在 onCreateViewHolder() 中使用 Typeface,可以直接使用,也可以将其传递给 ViewHolder 构造函数。特别是,精确创建 一个 Typeface 实例,而不是每行一个。

关于android - 在 RecyclerView 适配器中设置自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041384/

相关文章:

android - 如何在robotium中使用getChild?

html - Mac OSX 和 Windows 中的不同 CSS(字体粗细)。为什么字体粗细呈现不同?

css - @import 字体 VS 外部 CSS 的 HTML 链接

java - 如何修改 JTextPane 中的字母间距?

android - 如何在自定义适配器中更改可绘制形状的背景颜色

android - 更改android中进度条的颜色

android - 由于其他不需要的输出淹没 logcat,我的应用程序的 logcat 输出不断消失

android - 多次注入(inject)作用域对象的同一个实例

android - 显示重复项的 GridView

Android Pie 9.0 将用户带到通知中心