Android 是否缩放仅包含文本视图的RecyclerView中的所有项目?
需要将RecyclerView的所有TextView的TextSize动态缩放为单个大小 我尝试的是一次只缩放一个可见项目,给每个TextView不同的字体大小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
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()作为最后手段。