缩放只有 TextView 的 RecyclerView 中的所有项目?

Scale all items in a RecyclerView of only TextViews?

需要将 RecyclerView 的所有 TextView 的 TextSize 动态缩放到一个 Size。

我试过一次只缩放一个可见的项目,给每个 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) 在您的适配器中添加文本大小变量(假设 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():

Returns the total number of items in the data set hold by the adapter.

getChildCount() :

Returns the number of children in the group.

因此 getItemCount() 将 return 您的整个适配器数据集大小

( getItemCount() >= getChildCount() )