Java Android Recyclerview-增加所有内部文本视图的字体大小
此代码在我的主要活动中(工作正常): 和recyclerview适配器:Java Android Recyclerview-增加所有内部文本视图的字体大小,java,android,android-recyclerview,Java,Android,Android Recyclerview,此代码在我的主要活动中(工作正常): 和recyclerview适配器: public class Adapter_RecyclerViewReader extends RecyclerView.Adapter<Adapter_RecyclerViewReader.MyViewHolder> { private List<ReaderLineObj> readerLineObjList; float minTextSize = 50; float
public class Adapter_RecyclerViewReader extends RecyclerView.Adapter<Adapter_RecyclerViewReader.MyViewHolder> {
private List<ReaderLineObj> readerLineObjList;
float minTextSize = 50;
float maxTextSize = 80;
Adapter_RecyclerViewReader.MyViewHolder holderGlobal;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tvRowHidId, tvRowTitle, tvRowContent;
public MyViewHolder(View view) {
super(view);
tvRowTitle = (TextView) view.findViewById(R.id.tvRowTitle);
tvRowContent = (TextView) view.findViewById(R.id.tvRowContent);
}
}
public void ResizeTextSize(Boolean makeBigger){
}
public Adapter_RecyclerViewReader(List<ReaderLineObj> readerLineObjList) {
this.readerLineObjList = readerLineObjList;
}
@Override
public Adapter_RecyclerViewReader.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_recycler_list_reader, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(Adapter_RecyclerViewReader.MyViewHolder holder, int position) {
ReaderLineObj readerLineObj = readerLineObjList.get(position);
if (readerLineObj.getTitle().length() >0 ){
holder.tvRowTitle.setText(Html.fromHtml(readerLineObj.getTitle()));
}else{
holder.tvRowTitle.setVisibility(View.GONE);
}
holder.tvRowContent.setText(Html.fromHtml(readerLineObj.getContent()));
}
@Override
public int getItemCount() {
return readerLineObjList.size();
}
}
public类适配器\u recyclerviewer扩展了RecyclerView.Adapter
点击左键将在整个网格视图标题和内容中为当前字体大小添加1sp
我如何才能做到这一点?需要注意的要点:
i) 您将更改活动类中的值,但适配器必须实现您对大小所做的更改
ii)需要使用重新加载视图
mAdapter.notifyDataSetChanged();
方法
那么,我们的工作是什么呢。您可以使用静态浮点值来保存大小,例如,在MainActivity初始化中
static float size_of_items;
然后按“增量”按钮将浮点值更改为
size_of_items=size_of_items+1;
在减量按钮上执行类似操作
注意:在adapter类上,对onBindViewHolder方法进行以下更改:
holder.tvRowTitle.setTextSize(TypeValue.COMPLEX_UNIT_SP, MainActivity.size_of_items);
holder.tvRowContent.setTextSize(TypeValue.COMPLEX_UNIT_SP, MainActivity.size_of_items);
这样您就可以在onBindViewHolder中获得代码,如下所示
if (readerLineObj.getTitle().length() >0 ){
holder.tvRowTitle.setText(Html.fromHtml(readerLineObj.getTitle()));
}else{
holder.tvRowTitle.setVisibility(View.GONE);
}
holder.tvRowContent.setText(Html.fromHtml(readerLineObj.getContent()));
holder.tvRowTitle.setTextSize(TypeValue.COMPLEX_UNIT_SP, MainActivity.size_of_items);
holder.tvRowContent.setTextSize(TypeValue.COMPLEX_UNIT_SP, MainActivity.size_of_items);
最后:
记住使用mAdapter.notifyDataSetChanged()
每次更改项目大小后
您就有了这样一个简单的方法:
private void increaseTextSize(){
size_of_items=size_of_items+1;
mAdapter.notifyDataSetChanged();
}
祝你一切顺利,希望答案不会太迟。您不需要我上次创建的方法,而是可以在setOnClickListener方法上的“增大大小”按钮上使用内部代码。祝你好运
private void increaseTextSize(){
size_of_items=size_of_items+1;
mAdapter.notifyDataSetChanged();
}