diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-07-05 18:52:51 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-07-05 18:52:51 +0200 |
| commit | 85f5277e6e4780960b8e028f8a8b717d121ac3be (patch) | |
| tree | 36f047dc47dc05aa86edd505a2c486db2ec0007d /main | |
| parent | f4a05a82e889609a743cdb9198b9edf6734fbfe9 (diff) | |
| download | cgeo-85f5277e6e4780960b8e028f8a8b717d121ac3be.zip cgeo-85f5277e6e4780960b8e028f8a8b717d121ac3be.tar.gz cgeo-85f5277e6e4780960b8e028f8a8b717d121ac3be.tar.bz2 | |
fix #2057
* can be reproduced in my emulator with GCH8T5
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/layout/cachedetail_description_page.xml | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 5 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java | 55 |
3 files changed, 60 insertions, 4 deletions
diff --git a/main/res/layout/cachedetail_description_page.xml b/main/res/layout/cachedetail_description_page.xml index 8325798..dba6789 100644 --- a/main/res/layout/cachedetail_description_page.xml +++ b/main/res/layout/cachedetail_description_page.xml @@ -11,7 +11,7 @@ <!-- Short description -->
- <TextView
+ <cgeo.geocaching.ui.IndexOutOfBoundsAvoidingTextView
android:id="@+id/shortdesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
@@ -25,7 +25,7 @@ <!-- Long description -->
- <TextView
+ <cgeo.geocaching.ui.IndexOutOfBoundsAvoidingTextView
android:id="@+id/longdesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 6ec034d..9c03401 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -30,6 +30,7 @@ import cgeo.geocaching.ui.EditNoteDialog.EditNoteDialogListener; import cgeo.geocaching.ui.Formatter; import cgeo.geocaching.ui.HtmlImageCounter; import cgeo.geocaching.ui.ImagesList; +import cgeo.geocaching.ui.IndexOutOfBoundsAvoidingTextView; import cgeo.geocaching.ui.LoggingUI; import cgeo.geocaching.ui.OwnerActionsClickListener; import cgeo.geocaching.ui.WeakReferenceHandler; @@ -1895,14 +1896,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc */ private class LoadDescriptionTask extends AsyncTask<Object, Void, Void> { private final View loadingIndicatorView; - private final TextView descriptionView; + private final IndexOutOfBoundsAvoidingTextView descriptionView; private final String descriptionString; private Spanned description; private final View shortDescView; public LoadDescriptionTask(final String description, final View descriptionView, final View loadingIndicatorView, final View shortDescView) { this.descriptionString = description; - this.descriptionView = (TextView) descriptionView; + this.descriptionView = (IndexOutOfBoundsAvoidingTextView) descriptionView; this.loadingIndicatorView = loadingIndicatorView; this.shortDescView = shortDescView; } diff --git a/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java new file mode 100644 index 0000000..a0c8b52 --- /dev/null +++ b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java @@ -0,0 +1,55 @@ +package cgeo.geocaching.ui; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * Jelly beans can crash when calculating the layout of a textview. + * + * https://code.google.com/p/android/issues/detail?id=35466 + * + */ +public class IndexOutOfBoundsAvoidingTextView extends TextView { + + public IndexOutOfBoundsAvoidingTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public IndexOutOfBoundsAvoidingTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public IndexOutOfBoundsAvoidingTextView(Context context) { + super(context); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + try{ + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } catch (IndexOutOfBoundsException e) { + setText(getText().toString()); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } + + @Override + public void setGravity(int gravity){ + try{ + super.setGravity(gravity); + } catch (IndexOutOfBoundsException e) { + setText(getText().toString()); + super.setGravity(gravity); + } + } + + @Override + public void setText(CharSequence text, BufferType type) { + try{ + super.setText(text, type); + } catch (IndexOutOfBoundsException e) { + setText(text.toString()); + } + } +}
\ No newline at end of file |
