[英]How do you use a custom font on Strings that are being used in a RecyclerView?
我有一個非常簡單的RecyclerView,但我想在傳遞給View的Strings上放一個自定義字體。 我還有一些其他事情,但是您可以忽略該代碼。 這是我的適配器:
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;
}
}
而且,如果無法在String上放置自定義字體,我該怎么做才能使所有數據成為TextView?
謝謝,
沙魯克·拉扎(Shahrukh Raza)
您需要一個自定義TextView才能使用自定義字體。
請參考此鏈接: 如何制作自定義TextView?
您應該創建一個資源文件夾,然后創建一個子文件夾字體,然后將所有字體放入其中。
在您的Holder類中:
TextView title = (TextView) itemView.findViewById(R.id.textRoot);
Typeface face = Typeface.createFromAsset(getAssets(), "fonts/your_font_name.ttf");
title.setTypeface(face);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.