我是android的初学者。我通过解析JSON数据创建了RecyclerView
。我想自定义RecyclerView
项目中的此TextView字体。我尝试了许多方法,但对我而言不起作用。我想在RecyclerView
项目的文本视图中将自定义字体设置为我的字体。请帮我
我的适配器代码:
public class ExampleAdapter extends RecyclerView.Adapter <ExampleAdapter.ExampleViewHolder>{
private Context mContext;
private ArrayList<ExampleItem> mExampleList;
private onItemClickListener mListener;
public interface onItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(onItemClickListener listener){
mListener = listener;
}
public ExampleAdapter(Context context, ArrayList<ExampleItem> examplelist){
mContext =context;
mExampleList = examplelist;
}
@NonNull
@Override
public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.example_item,parent,false);
return new ExampleViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
ExampleItem currentItem = mExampleList.get(position);
String imageUrl = currentItem.getmImageUrl();
String creatorName = currentItem.getmCreator();
String cat =currentItem.getmCat();
holder.mTextViewCreator.setText(creatorName);
holder.mTextViewCat.setText(cat);
Glide.with(mContext)
.load(imageUrl)
.into(holder.mImageView);
}
@Override
public int getItemCount() {
return mExampleList.size();
}
public class ExampleViewHolder extends RecyclerView.ViewHolder{
public ImageView mImageView;
public TextView mTextViewCreator;
public TextView mTextViewCat;
public ExampleViewHolder(View itemView) {
super(itemView);
mImageView = itemView.findViewById(R.id.image_view);
mTextViewCreator = itemView.findViewById(R.id.text_view_creator);
mTextViewCat = itemView.findViewById(R.id.text_view_cat);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mListener != null){
int position = getAdapterPosition();
if (position !=RecyclerView.NO_POSITION){
mListener.onItemClick(position);
}
}
}
});
}
}
}
答案 0 :(得分:1)
将字体的.ttf文件放入项目的res / font文件夹中,然后使用fontFamily属性在xml布局中使用它,例如:
<TextView
android:id="@+id/yourTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/your_font_name"/>
此处参考:https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml
答案 1 :(得分:0)
首先,您需要在资产中创建一个名为fonts的文件夹,并将自己的字体放入其中。像这样
然后,您可以像这样使用setTypeface()方法(将此代码添加到onBindViewHolder()方法中)
AssetManager am = getContext().getApplicationContext().getAssets();
Typeface typeface = Typeface.createFromAsset(am, "fonts/Raleway-Medium.ttf");
holder.mTextViewCreator.setTypeface(typeface);
holder.mTextViewCat.setTypeface(typeface);
答案 2 :(得分:0)
要在TextView中使用特定字体,您需要在资产中创建一个名为“字体”的文件夹
您可以使用自定义字体将字样设置为TextView,如下所示:
TextView txt = (TextView) findViewById(R.id.custom_font);
Typeface font = Typeface.createFromAsset(getAssets(), "Chantelli_Antiqua.ttf");
txt.setTypeface(font);
但是,如果要在更多视图中使用自定义字体,好的方法是创建自己的TextView并设置字体类型,并在不同布局中使用它,以避免重复上面的代码。
答案 3 :(得分:0)
您可以尝试在设计标签中添加android studio中可用的默认Google字体。您可以搜索fontFamily,然后单击更多字体。这样,字体将自动添加到XMl中。它将适用于17级以上的API级别enter image description here
答案 4 :(得分:0)
Android 8.0(API级别26)引入了一项新功能,即XML docs中的字体
布局:
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/gotham_htf_book"
android:text="@string/title" />