Android 是否缩放仅包含文本视图的RecyclerView中的所有项目?

Android 是否缩放仅包含文本视图的RecyclerView中的所有项目?,android,textview,scale,android-recyclerview,Android,Textview,Scale,Android Recyclerview,需要将RecyclerView的所有TextView的TextSize动态缩放为单个大小 我尝试的是一次只缩放一个可见项目,给每个TextView不同的字体大小 itemCount = recyclerView.getLayoutManager().getChildCount(); for (int counter = 0; counter < itemCount; counter++) { mTV = (TextView) recyclerView.getLayoutManag

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

我尝试的是一次只缩放一个可见项目,给每个TextView不同的字体大小

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());
}
itemCount=recyclerView.getLayoutManager().getChildCount();
用于(int计数器=0;计数器<项计数;计数器++){
mTV=(TextView)recyclerView.getLayoutManager().getChildAt(计数器);
mTV.setTextSize(TypedValue.COMPLEX_UNIT_PX,mTV.getTextSize()*检测器
.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()
将返回整个适配器数据集大小


getItemCount()
=
getChildCount()

这张反对票是为了什么?谁投了反对票,谁就丢脸了!Johnny,作为对你评论的回应,纯粹是猜测,反对票可能是因为你的代码格式不太好。请记住,否决票并不是对你性格的人身攻击,它只意味着一个人认为你的问题不容易理解、理解和/或回答。请不要把他们的意见当回事。谢谢编辑:我刚刚为你改进了一点代码格式。你好,@MaximillianLaumeister,所以如果onBindViewHolder()中的(holder.textView.getTextSize()!=mTextSize)`in使recyclerView在第一次启动时不可见,但在这个空白屏幕上缩放时可见,并提供所需的textSize缩放@拉米。谢谢@约翰尼,不客气!创建adapter.Hi时,需要使用默认大小初始化mTextSize变量,但TextView会在xml中定义其TextSize。在这种情况下是21便士。谢谢@Rami!然而,文档建议:依赖notifyDataSetChanged()作为最后手段。