0

Hi I set a background to a textview as

mImageAppInstallStatus.setBackgroundResource(R.drawable.downloaded);

Then i set the gravity of textview as center as below

<TextView 
                    android:id="@+id/textview_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="12dp"
                    android:textColor="#ffffff"
                    android:gravity="center"
                    android:layout_alignParentLeft="true"/>

But in devices < API 11 i get a stackoverflowerror as below ..I GET THE CRASH ONLY IF I MAKE gravity center if i make gravity left it works

 java.lang.StackOverflowError
04-10 13:09:33.747: E/(6732):   at android.text.Layout.measureText(Layout.java:1655)
04-10 13:09:33.747: E/(6732):   at android.text.Layout.getLineMax(Layout.java:689)
04-10 13:09:33.747: E/(6732):   at android.text.Layout.draw(Layout.java:340)
04-10 13:09:33.747: E/(6732):   at android.text.BoringLayout.draw(BoringLayout.java:365)
04-10 13:09:33.747: E/(6732):   at android.widget.TextView.onDraw(TextView.java:4322)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6920)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.widget.FrameLayout.draw(FrameLayout.java:357)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.widget.AbsListView.dispatchDraw(AbsListView.java:1487)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:7026)
04-10 13:09:33.747: E/(6732):   at android.widget.AbsListView.draw(AbsListView.java:2595)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.support.v4.view.ViewPager.draw(ViewPager.java:2153)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:769)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.View.draw(View.java:6923)
04-10 13:09:33.747: E/(6732):   at android.widget.FrameLayout.draw(FrameLayout.java:357)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
04-10 13:09:33.747: E/(6732):   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
Shailendra Madda
  • 20,649
  • 15
  • 100
  • 138
user1340801
  • 423
  • 3
  • 10
  • 21

1 Answers1

1

Your XML is probably too complicated and giving additional commands for drawing may be blocking you.

If you have too many nested layout views or if you have too many methods which have recursive calls it is normal that you will see java.lang.StackOverflowError.

Check out Android Developers blog to see how to ideally optimise your complex Layouts.

Also don't forget to check CommonsWare answer in the following topic about number of nested layouts:

Stackoverflow: Caused by nested views?

Community
  • 1
  • 1
canova
  • 3,965
  • 2
  • 22
  • 39