2013-10-09 3 views
1

일부 콘텐츠를 렌더링하려는 WebView가 있습니다. 그러나이 WebView는 표시하는 데이터의 길이가 5100 자에 가깝게 도달하면 단일 문자를 표시하지 않습니다.데이터 크기가 5100자를 초과하면 Android WebView가 표시되지 않습니다.

데이터 길이가 5000 자 미만인 경우 WebView가 완벽하게 작동합니다.

WebView에서 "abcde ....."와 비슷한 간단한 데이터를 전달하려고 시도했습니다. < 5000 문자로 잘 동작합니다. > 5100 자 이상이면 단일 문자가 표시되지 않습니다.

WebView에서 표시 할 수있는 데이터의 양에 제한이 있는지 인터넷을 통해 조사했지만 아무 것도 찾을 수없는 것 같습니다.

내 Java 코드는 다음과 같습니다.

myWebView = (WebView) findViewById(R.id.passage); 

String data = "abcde ......."; // large number of characters > 5100. 

myWebView.loadDataWithBaseURL(URL, data, "text/html", null,null); 

나는 loadDataWithBaseURL 기능을 사용하는 대신뿐만 아니라 myWebView.loadData(data, "text/html", null);을 시도했다, 그러나 그것은 도움이되지 않았습니다.

여기에 제가 사용하는 XML이 있습니다.

<ScrollView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:fadeScrollbars="false" 
     android:scrollbarAlwaysDrawVerticalTrack="true" 
     android:scrollbarFadeDuration="0" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingBottom="5dp" 
      android:paddingLeft="20dp" 
      android:paddingRight="20dp" 
      android:paddingTop="10dp" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/passage" 
       android:textColor="@color/red" 
       android:textSize="18px" /> 

      <WebView 
       android:id="@+id/passage" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fadeScrollbars="false" 
       android:layerType="software" 
       android:scrollbarAlwaysDrawVerticalTrack="true" 
       android:scrollbarFadeDuration="0" /> 
     </LinearLayout> 
    </ScrollView> 

도와주세요.

편집 : 정확하게 말하면, 5096자를 렌더링하면 제대로 렌더링됩니다. 5097 이상의 문자를 렌더링하려고 시도하면 아무 것도 표시되지 않습니다. 파일에 data 변수를 기록하려고합니다. 모든 데이터가 기록되므로 문자열에 저장되지 않는 적절한 데이터와 관련된 문제는 발생하지 않습니다.

+0

이상적으로 작동해야합니다. 해당 웹 뷰가있는 활동을 열 때 잠시 기다리십시오. 데이터를로드합니다. –

+0

데이터를로드하지 않았습니다. 나는 오랫동안 장치를 보관했다. 성공적으로 표시 할 수있는 정확한 수의 문자가있었습니다. 'N'문자를 사용하면 몇 초도 걸리지 않아도 성공적으로 표시됩니다. 'N + 1'문자는 화면에 문자 하나를 표시하지 않습니다. 아무리 많은 시간을 기다리지도 않습니다. : – Manu

+0

@Manu 장치 이름과 실행중인 OS 버전은 무엇입니까? –

답변

1

이것은 나에게 발생했지만 훨씬 낮은 WebView 콘텐츠 크기에서 발생했습니다. loadDataWithBaseURL을 통해 1506 개의 문자를로드하는 것은 정상적으로 작동했지만 1507 개의 문자를로드하면 배경을 포함하여 전체 WebView가 사라졌습니다. (그래도 여전히 텍스트를 복사 할 수 있습니다.)

해결 방법은 android:layerType="software"을 제거하고 기본 하드웨어 layerType으로 대체하는 것입니다.

+0

이러한 동작이 발생하는 특별한 이유가 있습니까? – Manu