有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在RecyclerView中使用的字符串上使用自定义字体?

我有一个非常简单的RecyclerView,但我想在传递给视图的字符串上放置一个自定义字体。我有一些额外的东西,但你可以忽略这些代码。这是我的适配器:

public class Adapter extends RecyclerView.Adapter<Adapter.Holder> {

private List<ListItem> ListData;
private LayoutInflater inflater;



private ItemClickCallBack itemClickCallBack;

public interface ItemClickCallBack {
    void onItemClick(int p);
    void onSecondaryClick(int p);
}

public void setItemClickCallBack(final ItemClickCallBack itemClickCallBack){
    this.itemClickCallBack= itemClickCallBack;
}


public Adapter(List<ListItem> ListData, Context context) {
    inflater = LayoutInflater.from(context);
    this.ListData = ListData;

}


@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.list_item, parent, false);
    return new Holder(view);
}

@Override
public void onBindViewHolder(Holder holder, int position) {
    ListItem item = ListData.get(position);
    holder.title.setText(item.getTitle());
    holder.subtitle.setText(item.getSubTitle());
    if(item.isStar()){
        holder.thumbnail.setImageResource(R.drawable.ic_star_black_24dp);
    }else{
        holder.thumbnail.setImageResource(R.drawable.ic_star_border_black_24dp);
    }
}



@Override
public int getItemCount() {
    return ListData.size();
}

public void setListData (ArrayList<ListItem> exerciseList){
    this.ListData.clear();
    this.ListData.addAll(exerciseList);
}

class Holder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private TextView title;
    private View container;
    private TextView subtitle;
    private ImageView avatar;
    private ImageView thumbnail;

    public Holder(View itemView) {
        super(itemView);
        title = (TextView) itemView.findViewById(R.id.textRoot);

        container = itemView.findViewById(R.id.listItem);

        container.setOnClickListener(this);

        subtitle = (TextView) itemView.findViewById(R.id.txt_subtitle);
        thumbnail = (ImageView) itemView.findViewById(R.id.secondaryIcon);

        thumbnail.setOnClickListener(this);

        avatar = (ImageView) itemView.findViewById(R.id.img_avatar);


    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.listItem){
                 itemClickCallBack.onItemClick(getAdapterPosition());
        }else{
              itemClickCallBack.onSecondaryClick(getAdapterPosition());
        }

    }
}

}

这是我保存数据的地方。我知道我运行过几次同样的东西,但我只是看到了滚动。总之,下面是代码:

public class Data {


final private static String duas[] = {"Hello to you","Bye to you","Walaa"};
final private static String Trans[] = {"Hmmmm", "Bruh","Khalas"};

private final static int face = R.drawable.ic_tag_faces_black_24dp;

public static List<ListItem> getListData() {
    List<ListItem> data = new ArrayList<>();
    for (int x = 0; x < 4; x++) {
        for (int i = 0; i < duas.length; i++) {
            ListItem item = new ListItem();
            item.setTitle(duas[i]);
            item.setSubTitle(Trans[i]);
            data.add(item);

        }
    }
    return data;
}

}

如果无法在字符串上设置自定义字体,我需要做什么才能将所有数据设置为文本视图

谢谢——

沙鲁赫·拉扎


共 (2) 个答案

  1. # 1 楼答案

    你应该创建一个资产文件夹,然后创建一个子文件夹字体,并将所有字体放入其中

    在你的课程中:

    TextView title = (TextView) itemView.findViewById(R.id.textRoot);
    Typeface face = Typeface.createFromAsset(getAssets(), "fonts/your_font_name.ttf");
    title.setTypeface(face);