scrollview is extremly slow on ics (android 4.0) when containing a long textview

匿名 (未验证) 提交于 2019-12-03 02:26:02

问题:

Here's my problem, i'm developing a news applicaiton and i used scrollview wrapping a textview to show the content of the news. But i found that scrolling is extremly slow on android 4.0 ics when the textview is quite long, and the longer the text, the slower the scrolling is. While on android 2.3 devices things just go as fast as expected.

I don't know whether this is really a system bug cause i found this similar problems reported on the android project

Here's my layout:

<FrameLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent">      <ScrollView         android:id="@id/lst_news_details"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:background="@color/list_background"         android:fadingEdge="none"         android:gravity="center" >          <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="vertical" >              <LinearLayout                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:layout_marginBottom="10dp"                 android:layout_marginLeft="15dp"                 android:layout_marginRight="15dp"                 android:layout_marginTop="10dp"                 android:orientation="vertical" >                  <TextView                     android:id="@id/tv_news_details_title"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     style="@style/Detail_Title"/>                  <TextView                     android:id="@id/tv_news_details_category"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     style="@style/Detail_Category"/>                  <TextView                     android:id="@id/tv_news_details_created_at"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:layout_marginBottom="10dp"                     style="@style/Detail_Time"/>                  <include layout="@layout/detail_horizontal_divideline" />                  <ImageView                     android:id="@id/img_news_details_image"                     style="@style/Detail_Picture"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginTop="6dp"                     android:layout_gravity="center_horizontal"                     android:contentDescription="@string/image_contentDescription"/>                  <TextView                     android:id="@id/tv_news_details_context"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:layout_marginTop="10dp"                     android:layout_gravity="center_horizontal"                     style="@style/Detail_Content"/>              </LinearLayout>              <View                 android:layout_width="match_parent"                 android:layout_height="10dip" />          </LinearLayout>      </ScrollView>       <!-- actionbar shadow -->     <LinearLayout          android:layout_width="match_parent"         android:layout_height="wrap_content"         android:background="@drawable/action_bar_shadow"         >     </LinearLayout>  </FrameLayout> 

And my style.xml

<style name="Detail_Title">      <item name="android:textColor">@color/list_item_title</item>      <item name="android:textSize">18sp</item>      <item name="android:shadowColor">@color/list_item_text_shadow</item>      <item name="android:shadowDx">0</item>      <item name="android:shadowDy">2</item>      <item name="android:shadowRadius">2</item>  </style>   <style name="Detail_Category">      <item name="android:textColor">@color/list_item_category</item>      <item name="android:textSize">14sp</item>      <item name="android:shadowColor">@color/list_item_text_shadow</item>      <item name="android:shadowDx">0</item>      <item name="android:shadowDy">2</item>      <item name="android:shadowRadius">2</item>  </style>   <style name="Detail_Time">      <item name="android:textColor">@color/list_item_time</item>      <item name="android:textSize">14sp</item>      <item name="android:shadowColor">@color/list_item_text_shadow</item>      <item name="android:shadowDx">0</item>      <item name="android:shadowDy">2</item>      <item name="android:shadowRadius">2</item>  </style>   <style name="Detail_Content">      <item name="android:textColor">@color/detail_content_text</item>      <item name="android:textSize">16sp</item>      <item name="android:autoLink">all</item>      <item name="android:shadowColor">@color/list_item_text_shadow</item>      <item name="android:shadowDx">0</item>      <item name="android:shadowDy">2</item>      <item name="android:shadowRadius">2</item>  </style>   <style name="Detail_Picture">     <item name="android:layout_gravity">center</item>     <item name="android:gravity">center</item>     <item name="android:background">@drawable/image_frame</item>  </style> 

By the way, i've already set

android:minSdkVersion="7" android:targetSdkVersion="14"

But haven't set the hardware accelerated flag yet.

Is there any solution? Please help me, thanks!

回答1:

Well, i've found the solution on my own

just set android:hardwareAccelerated="false" in the manifest.xml

Still quite confused about the reason, waiting for an explanation.



回答2:

Note that you can add the android:hardwareAccelerated="false" for a specific activity (or even a specific view) as seen here: http://developer.android.com/guide/topics/graphics/hardware-accel.html if you want to keep the rest of your app hardware accelerated.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!