仅在TextViews的RecyclerView中缩放所有项目?

时间:2015-12-05 09:09:25

标签: android textview scale android-recyclerview

需要动态地将RecyclerView的所有TextView的TextSize缩放为单个大小。

我尝试过一次只缩放一个可见项目,为每个TextView提供不同的FontSize。

itemCount = recyclerView.getLayoutManager().getChildCount();

for (int counter = 0; counter < itemCount; counter++) {
    mTV = (TextView) recyclerView.getLayoutManager().getChildAt(counter);
    mTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTV.getTextSize() * detector
            .getScaleFactor());
}
我想,

getItemCount()不能代替getChildCount()使用!

谢谢!

1 个答案:

答案 0 :(得分:0)

我的建议是:

1)在适配器中添加文本大小变量(假设为mTextSize)。

2)将setter方法添加到此变量中。

public void setTextSize(float size){
   mTextSize = size;
}

3)在onBindViewHolder()方法中,您可以根据需要更改文字大小

public void onBindViewHolder(ViewHolder holder, int position) {
    if(holder.textView.getTextSize() != mTextSize && mTextSize != 0.0){
       holder.textView.setTextSize(mTextSize);
    }
}

4)当你想改变大小时,只需要调用:

adapter.setTextSize(newSize);
adapter.notifyDataSetChanged();

<强> PS:

getItemCount()

  

返回适配器保留的数据集中的项目总数。

getChildCount()

  

返回组中的子项数。

因此getItemCount()将返回整个适配器DataSet大小

getItemCount()&gt; = getChildCount()