A bit of additional information found through more testing - if I
restrict each of the textviews to be at most one line with the
following:

  android:maxLines="1"
  android:singleLine="true"

then it works fine (even with the background drawable set). If I let
any one of the text views go more than one line in height, the
exception will be thrown. It is thrown as soon as I start scrolling
(for example, even if I scroll very slowly, by one pixel). My list
adapter isn't getting called to fetch another view as all are on
screen at this point, it looks like some drawing state which happens
when the list is being animated maybe? I'm not sure what other
combinations I can try here in attributes on the text views, I was
hoping that setting:

  android:ellipsize="none"
  android:singleLine="false"

would get around whatever state it being hit, but no luck,

Thanks


On Sep 14, 11:29 am, Mark Wyszomierski <mar...@gmail.com> wrote:
> Cool I'll check out those facilities. Pasting the exact layout below.
> I can't nail down exactly what's causing this. The first render of the
> listview works ok. The first attempt to scroll generates the exception
> (pasted below). I tried using a 9 png drawable direct from the android
> project, same behavior. If I just get rid of background drawable
> specified in the top-level linear layout, it works fine. The parent
> listview has nothing custom in it, just part of a ListActivity:
>
> <LinearLayout
>   xmlns:android="http://schemas.android.com/apk/res/android";
>   android:layout_width="fill_parent"
>   android:layout_height="wrap_content"
>   android:background="@drawable/catastrophe">
>
>   <ImageView
>     android:layout_height="44dip"
>     android:layout_width="44dip"
>     android:gravity="center_vertical" />
>
>   <LinearLayout
>     android:layout_width="fill_parent"
>     android:layout_height="wrap_content"
>     android:orientation="vertical" >
>
>     <TextView
>       android:layout_width="fill_parent"
>       android:layout_height="wrap_content" />
>
>     <TextView
>       android:layout_width="fill_parent"
>       android:layout_height="wrap_content" />
>
>     <TextView
>       android:layout_width="fill_parent"
>       android:layout_height="wrap_content" />
>
>   </LinearLayout>
>
> </LinearLayout>
>
> Exception:
>
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):
> java.lang.StackOverflowError
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.graphics.Canvas.drawText(Canvas.java:1269)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.text.Layout.draw(Layout.java:337)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.TextView.onDraw(TextView.java:3921)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5838)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.buildDrawingCache(View.java:5617)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.getDrawingCache(View.java:5458)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1422)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.AbsListView.dispatchDraw(AbsListView.java:1319)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.ListView.dispatchDraw(ListView.java:2820)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.AbsListView.draw(AbsListView.java:2121)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.FrameLayout.draw(FrameLayout.java:352)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.FrameLayout.draw(FrameLayout.java:352)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.FrameLayout.draw(FrameLayout.java:352)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.View.draw(View.java:5841)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.widget.FrameLayout.draw(FrameLayout.java:352)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> com.android.internal.policy.impl.PhoneWindow
> $DecorView.draw(PhoneWindow.java:1847)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewRoot.draw(ViewRoot.java:1217)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.os.Handler.dispatchMessage(Handler.java:99)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.os.Looper.loop(Looper.java:123)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> android.app.ActivityThread.main(ActivityThread.java:3948)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> java.lang.reflect.Method.invokeNative(Native Method)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> java.lang.reflect.Method.invoke(Method.java:521)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> com.android.internal.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.java:782)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
> 09-14 17:26:03.497: ERROR/AndroidRuntime(2099):     at
> dalvik.system.NativeStart.main(Native Method)
>
> On Sep 14, 11:02 am, Kostya Vasilyev <kmans...@gmail.com> wrote:
>
>
>
> >   Alternative resource facility built into Android supports conditions
> > based on API level (= Android version):
>
> >http://developer.android.com/guide/topics/resources/providing-resourc...
>
> >  From this starting point, one can derive different solutions:
>
> > - Switch at layout level, providing entirely separate layouts for 1.5
> > and 1.6+
>
> > - Move just the view that needs to be handled differently into
> > version-specific layout files with <merge> as top level element, and
> > pull them into the main layout using <include>
>
> >http://developer.android.com/resources/articles/layout-tricks-merge.html
>
> > - Switch at the drawable level, by creating version-specific aliases for
> > the background drawable.
>
> >http://developer.android.com/guide/topics/resources/providing-resourc...
>
> > However, I suspect there is something wrong with the nine-patch that is
> > causing 1.5 to blow up. Perhaps trying some other nine-patch (perhaps
> > even a button background from sdk resources) would be a good test before
> > trying the above.
>
> > -- Kostya
>
> > 14.09.2010 21:45, Frank Weiss пишет:
>
> > > I suppose you could add OS-specific info to the layout XML files and
> > > write your own layout inflater.
>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to android-developers@googlegroups.com
> > > To unsubscribe from this group, send email to
> > > android-developers+unsubscr...@googlegroups.com
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
>
> > --
> > Kostya Vasilyev -- WiFi Manager + pretty widget 
> > --http://kmansoft.wordpress.com

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to