此代码在我的MainActivity中(工作正常):
mAdapter = new Adapter_RecyclerViewReader(readerLineObjs);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setLayoutManager(new LinearLayoutManagerWithSmoothScroller(getBaseContext()));
recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(mAdapter);
和recyclerview适配器:
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();
}
}
tvRowTitle和tvRowContent的字体大小与btw相同。
我在MainActivity xml中添加了2个按钮,我希望它们具有功能性 获取tvRowTitle的当前字体大小,然后为recyclerview中的所有textview增加/减少它(相对于当前的fontsize)。
显示左侧按钮将在整个网格视图标题&amp;中添加1sp到当前字体大小。内容。
我该怎么做?
答案 0 :(得分:1)
注意事项: i)您将在Activity类中更改值,但适配器必须实现您对大小所做的更改 ii)您需要使用
重新加载视图mAdapter.notifyDataSetChanged();
方法
那么工作是什么呢?您可以使用静态浮点值来保持大小,例如,在MainAcitivity中初始化。
static float size_of_items;
然后在增量按钮上将float的值更改为
size_of_items=size_of_items+1;
在减量按钮上做类似的事情。
注意:在适配器类上,对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();
的每次更改后使用size_of_items
,以便您拥有这样一个简单的方法:
private void increaseTextSize(){
size_of_items=size_of_items+1;
mAdapter.notifyDataSetChanged();
}
一切顺利,希望答案不会太晚。您不需要我最后创建的方法,而是可以使用setOnClickListener方法上的increase_size按钮内的代码。古德勒克