我正在尝试构建类似 文本阅读器 的内容。它必须有一个水平滑动(正常书籍),而不是向下滚动。
为了实现这一点,我正在使用许多 TextViews 动态填充 ViewFlipper 。直观的想法是,我在之前的 TextView 溢出上创建了一个新的 TextView ,并将其添加到 ViewFlipper 。
我可以通过 setMaxLines()来实现这一目标,但是我无法获得超出该最大行的文本。
问题:
如何在溢出时将文本从一个TextView移动到另一个TextView
或
我决定使用的方法根本上是错误的吗?
编辑:
抱歉,由于某种原因,我无法解决问题。也许这会有所帮助:
TextView text1, text2;
String s = "Extreamly long string. Much longer than this one";
text1.setText(s);
text2.setText( // Text that is overflowing //);
如何确定String的哪个部分可见,以及哪个部分溢出?
由于
答案 0 :(得分:0)
TextView tv = new TextView(context);
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Layout l = tv.getLayout();
int height = tv.getHeight();
int scrollY = tv.getScrollY();
/**
* Key part
*/
int lineCount = l.getLineForVertical(height + scrollY);
int start = l.getLineStart(0);
int end = l.getLineEnd(lineCount - 1);
/**
* Cut string
*/
String s = tv.getText().toString().substring(start, end);
}
}
);