我正在开发一个Android应用程序。我的应用程序有Facebook等新闻提要列表。如果TextView的文本对于每个帖子来说太长,我会设置readmore功能。我使用ExpandableTextView进行readmore功能。但没关系。
然后问题是获取TextView的行数。我将文本设置为TextView后需要知道行数,因为我需要切换Read more按钮的可见性。但getLineCount效果不佳。请参阅下面的代码。
在Recycler适配器的bindViewHolder中,我将文本设置为TextView,就像这样
viewHolder.tvTitle.setText(post.getTitle());
viewHolder.tvTitle.post(new Runnable() {
@Override
public void run() {
Log.i("LINE_COUNT_"+String.valueOf(position),String.valueOf(viewHolder.tvTitle.getLineCount()));
if(viewHolder.tvTitle.getLineCount()>=3)
{
viewHolder.tvReadmore.setVisibility(View.VISIBLE);
}
else{
viewHolder.tvReadmore.setVisibility(View.GONE);
}
}
});
正如您所看到的,我正在使用runnable,因为如果我不使用它,TextView的getLineCount()总是返回0。但是,当我运行我的代码并查看我的应用程序时,getLineCount()仅适用于前2或3项。不适用于其他项目。我在代码中记录行数。这是我在logcat中得到的。请参见下面的屏幕截图。
正如您在logcat中看到的那样,它只返回前两项的值。对于其余项目,它始终返回0.实际上,列表中的所有TextView都至少有一行文本行。有些人有4或5.但它不起作用。可运行在RecyclerView适配器中不能正常工作?如何修复我的代码以获得适配器中textview的正确行数?