如何在TextView呈现字符串之前获取字符串将占用的行数.
A ViewTreeObserver不起作用,因为它们仅在渲染后触发.
我正在尝试动态调整我的textview,但getlinecount()方法总是在settext()和invalidate()之后返回0.我正在使用以下代码:
if (convertView == null) {
convertView = lInflater.inflate(R.layout.listview, null);
holder = new ViewHolder();
holder.text2 = (TextView)convertView.findViewById(R.id.TextView02);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.text2.setText(arr2[position]);
holder.text2.invalidate();
int lineCnt = holder.text2.getLineCount();
Run Code Online (Sandbox Code Playgroud)
holder是一个静态类,如下所示:
static class ViewHolder {
TextView text2;
}
Run Code Online (Sandbox Code Playgroud)
holder包含非null text2,内容集也为非null.
有人可以帮忙吗?
Thanx提前.
我有一个全屏TextView持有一个需要滚动的长跨度.TextView的getLineCount()为我提供了整个文本块使用的总行数,但我想知道屏幕上当前可以看到多少行文本.
或者,更好的是,有没有办法找出屏幕上当前可见的线条范围?例如,当视图滚动时,我可以告诉20-60行当前是否可见?
我想知道是否有任何方法可以检测到文本视图中的字符串是否到达屏幕的末尾并因此更改行,或者如果textview跨越2行?
我想知道这一点,所以如果textview跨越2行,我可以增加一些textviews之间的边距,当然我想动态地这样做.
TextView我正在尝试计算RecyclerView 适配器中a 的行数。
根据其他问题的答案(尽管与 RecyclerViews 无关),我尝试将其添加到我的onBindViewHolder方法中:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Message message = messages.get(position);
holder.textView.setText(message.getMessage());
holder.textView.setVisibility(View.VISIBLE);
// Get the number of lines
holder.textView.post(new Runnable() {
@Override
public void run() {
int lineCount = holder.textView.getLineCount();
Log.d("COUNT", String.valueOf(lineCount));
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是当我打开我的应用程序时,第一个 RecyclerView 项目将首先显示COUNT 0(即使它有 5 行)。但是,当我向下滚动几个项目,然后向上滚动回第一个项目时,它将显示正确的行数 ( COUNT 5)。
那么我做错了什么?