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、 我也无法更改文本视图的填充
MyRecyclerView
项目:
<?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&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"));
}
}