Java 如何在“回收器”视图中更改字体?

Java 如何在“回收器”视图中更改字体?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有一个按钮类型列表TextViews,类似于在水平RecyclerView中设置的,我正在尝试更改这些按钮文本的字体,但它不起作用。 我已将项目的XML文件中的字体更改为exo,并尝试使用许多查看提示而不是TextView,但无论如何我无法更改字体。 使用RecyclerView时,视图的定制是否有任何限制,或者我做得不对 p、 我也无法更改文本视图的填充 MyRecyclerView项目: <?xml version="1.0" encoding="utf

我有一个按钮类型列表
TextView
s,类似于在水平
RecyclerView
中设置的,我正在尝试更改这些按钮文本的字体,但它不起作用。 我已将项目的
XML
文件中的字体更改为exo,并尝试使用许多查看提示而不是
TextView
,但无论如何我无法更改字体。 使用
RecyclerView
时,视图的定制是否有任何限制,或者我做得不对

p、 我也无法更改
文本视图的填充

My
RecyclerView
项目:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="32dp">

    <TextView
        android:id="@+id/rpgListBtn"
        android:layout_width="130dp"
        android:layout_height="32dp"
        android:layout_weight="1"
        android:background="@drawable/ic_rpg_list"
        android:fontFamily="@font/exo_teste"
        android:gravity="center"
        android:includeFontPadding="true"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:text="D&amp;D"
        android:textAllCaps="false"
        android:textColor="#000000"
        android:textSize="13sp" />

    </LinearLayout>
我的适配器:

package com.example.rpglink.Adapters;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.rpglink.R;
import java.util.List;

public class RpgListAdapter extends RecyclerView.Adapter<RpgListAdapter.MyViewHolder> {

    private List<String> titulos;

    public RpgListAdapter(List<String> titulos) {
        this.titulos = titulos;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View itemLista = LayoutInflater.from(parent.getContext()).inflate(R.layout.rps_list_view_holder,parent,false);

        return new MyViewHolder(itemLista);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        String titulo = titulos.get(position);
        holder.titulo.setText(titulo);
    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder{

        TextView titulo;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            titulo = itemView.findViewById(R.id.rpgListBtn);
        }
    }
}
package com.example.rpglink.Adapters;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.example.rpglink.R;
导入java.util.List;
公共类RpgListAdapter扩展了RecyclerView.Adapter{
私人名单;
公共RpgListAdapter(列表){
this.titulos=titulos;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View itemLista=LayoutInflater.from(parent.getContext()).flate(R.layout.rps\u list\u View\u holder,parent,false);
返回新的MyViewHolder(itemLista);
}
@凌驾
public void onBindViewHolder(@NonNull MyViewHolder,int位置){
字符串titulo=titulos.get(位置);
holder.titulo.setText(titulo);
}
@凌驾
public int getItemCount(){
返回titulos.size();
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
TextView titulo;
公共MyViewHolder(@NonNull View itemView){
超级(项目视图);
titulo=itemView.findviewbyd(R.id.rpgListBtn);
}
}
}
活动中回收器视图的实现:

package com.example.rpglink.Activitys;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import com.example.rpglink.Adapters.RpgListAdapter;
import com.example.rpglink.Helpers.HorizontalSpaceItemDecoration;
import com.example.rpglink.R;

import java.util.ArrayList;
import java.util.List;

public class HomeC extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RpgListAdapter adapter;
    private List<String> lista = new ArrayList<>();

    public HomeC() {
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_c);

    criarTitulos();

    recyclerView = findViewById(R.id.rpgListView);

    recyclerView.setHasFixedSize(false);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);
    recyclerView.setLayoutManager(layoutManager);

    adapter = new RpgListAdapter(lista);
    recyclerView.setAdapter(adapter);

    recyclerView.addItemDecoration(new HorizontalSpaceItemDecoration(32));


    }
    public void criarTitulos(){
    this.lista.add("D&D");
    this.lista.add("CyberPunk");
    this.lista.add("Call of Cthulhu");
    this.lista.add("Tormenta");
    }
}
package com.example.rpglink.Activitys;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.os.Bundle;
导入com.example.rpglink.Adapters.RpgListAdapter;
导入com.example.rpglink.Helpers.HorizontalSpaceItemDecoration;
导入com.example.rpglink.R;
导入java.util.ArrayList;
导入java.util.List;
公共类HomeC扩展了AppCompative活动{
私人回收站;
专用RpgListAdapter适配器;
private List lista=new ArrayList();
公共住宅{
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u home\u c);
criartiulos();
recyclerView=findViewById(R.id.rpgListView);
recyclerView.setHasFixedSize(false);
RecyclerView.LayoutManager LayoutManager=新建LinearLayoutManager(getApplicationContext(),LinearLayoutManager.HORIZONTAL,false);
recyclerView.setLayoutManager(layoutManager);
适配器=新的RpgListAdapter(lista);
recyclerView.setAdapter(适配器);
recyclerView.addItemDecoration(新地平线SpaceItemDecoration(32));
}
公共空间{
本清单a.添加(“D&D”);
此.lista.add(“赛博朋克”);
本.lista.add(“Cthulhu的召唤”);
本清单a.添加(“折磨”);
}
}

您可以在ViewHolder构造函数中使用


可以在ViewHolder构造函数中使用


我的应用程序崩溃了,我的日志显示:2020-12-22 17:44:58.574 9521-9521/com.example.rpglink E/AndroidRuntime:FATAL EXCEPTION:main Process:com.example.rpglink,PID:9521 java.lang.RuntimeException:Font asset not found Font/exo.ttf路径看起来是对的,idk为什么不工作现在它工作了,原来我写的路径没有“font/”部分,只是“exo.ttf”,我的应用程序崩溃了,我的日志猫说:2020-12-22 17:44:58.574 9521-9521/com.example.rpglink E/AndroidRuntime:FATAL EXCEPTION:main Process:com.example.rpglink,PID:9521 java.lang.RuntimeException:font-asset not found font/exo.ttf路径似乎是正确的,idk为什么它不工作现在它工作了,结果我不得不写没有“font/”部分的路径,只有“exo.ttf”
package com.example.rpglink.Activitys;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import com.example.rpglink.Adapters.RpgListAdapter;
import com.example.rpglink.Helpers.HorizontalSpaceItemDecoration;
import com.example.rpglink.R;

import java.util.ArrayList;
import java.util.List;

public class HomeC extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RpgListAdapter adapter;
    private List<String> lista = new ArrayList<>();

    public HomeC() {
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_c);

    criarTitulos();

    recyclerView = findViewById(R.id.rpgListView);

    recyclerView.setHasFixedSize(false);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);
    recyclerView.setLayoutManager(layoutManager);

    adapter = new RpgListAdapter(lista);
    recyclerView.setAdapter(adapter);

    recyclerView.addItemDecoration(new HorizontalSpaceItemDecoration(32));


    }
    public void criarTitulos(){
    this.lista.add("D&D");
    this.lista.add("CyberPunk");
    this.lista.add("Call of Cthulhu");
    this.lista.add("Tormenta");
    }
}
public class MyViewHolder extends RecyclerView.ViewHolder{

    TextView titulo;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);

        titulo = itemView.findViewById(R.id.rpgListBtn);
        titulo.setTypeface(Typeface.createFromAsset(itemView.getContext().getAssets(), 
                                                   "font/exo_teste"));
    }
}