Android显示长文本

时间:2017-03-02 13:03:10

标签: android

我在这个案子上工作了好几天。我有一个文件,其中 20万行文本将显示在活动中。

我在ScrollView中使用TextView来显示文本。一切顺利,但TextView需要3-5 seconds来绘制文本。在此绘图时间内,如果我想滚动视图,我收到ANR错误

  

是否有任何解决方案可以避免ANR警告?

3 个答案:

答案 0 :(得分:1)

为了完成这项任务,我开发了一个名为LongTextView的库(类):https://github.com/metalurgus/LongTextView

用法:

<com.metalurgus.longtextview.LongTextView 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:gravity="left|top"
    app:maxLinesPerItem="2"
    app:text="@string/long_text"
    app:textColor="#ff0000"
    app:textSize="5dp" />

工作原理:

它将整个文本拆分为部分,并使用回收将其显示为ListView个项目,因此 - 由于巨大的TextView

而没有UI延迟和OOM

答案 1 :(得分:0)

您需要在manifest.xml文件中将硬件加速设置为false,如此处所述 - https://stackoverflow.com/a/12118798/1649353

  

或尝试这样

View scroll = layout.findViewById(R.id.scrollView1);
scroll.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

答案 2 :(得分:0)

试试这个:

TextView txtDetails = (TextView) findViewById(R.id.txtDetails);
txtDetails.setText("Your Text");
txtDetails.setMovementMethod(new ScrollingMovementMethod());

从这里: https://stackoverflow.com/a/11589827/6437300