aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-07-05 18:52:51 +0200
committerBananeweizen <bananeweizen@gmx.de>2013-07-05 18:52:51 +0200
commit85f5277e6e4780960b8e028f8a8b717d121ac3be (patch)
tree36f047dc47dc05aa86edd505a2c486db2ec0007d /main
parentf4a05a82e889609a743cdb9198b9edf6734fbfe9 (diff)
downloadcgeo-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.xml4
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java5
-rw-r--r--main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java55
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