带有Runnable的TextView的getLineCount在Adapter中无法正常工作

时间:2016-12-17 16:15:36

标签: android adapter textview

我正在开发一个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中得到的。请参见下面的屏幕截图。

enter image description here

正如您在logcat中看到的那样,它只返回前两项的值。对于其余项目,它始终返回0.实际上,列表中的所有TextView都至少有一行文本行。有些人有4或5.但它不起作用。可运行在RecyclerView适配器中不能正常工作?如何修复我的代码以获得适配器中textview的正确行数?

0 个答案:

没有答案