From f3a135bfbae0e64cf32dcb21714420ec974b1cab Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Mon, 23 May 2011 16:28:47 -0700 Subject: Added a new flag in TextView to disable Suggestions. This is needed for specific TextEdit (such as AutoCompleteTextField) which do not want to display the "No suggestions available" message. Bug 4443830 Change-Id: Ic228b56bacfdf2765e70eb24952ab087556c1f93 --- api/current.txt | 3 +++ core/java/android/widget/TextView.java | 42 ++++++++++++++++++++++++++++++---- core/res/res/values/attrs.xml | 6 +++++ core/res/res/values/public.xml | 1 + 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/api/current.txt b/api/current.txt index 3339497a2f2c..3558451e2961 100644 --- a/api/current.txt +++ b/api/current.txt @@ -866,6 +866,7 @@ package android { field public static final int subtitleTextStyle = 16843513; // 0x10102f9 field public static final int suggestActionMsg = 16843228; // 0x10101dc field public static final int suggestActionMsgColumn = 16843229; // 0x10101dd + field public static final int suggestionsEnabled = 16843630; // 0x101036e field public static final int summary = 16843241; // 0x10101e9 field public static final int summaryColumn = 16843426; // 0x10102a2 field public static final int summaryOff = 16843248; // 0x10101f0 @@ -25227,6 +25228,7 @@ package android.widget { method public android.text.style.URLSpan[] getUrls(); method public boolean hasSelection(); method public boolean isInputMethodTarget(); + method public boolean isSuggestionsEnabled(); method public boolean isTextSelectable(); method public int length(); method public boolean moveCursorToVisibleOffset(); @@ -25298,6 +25300,7 @@ package android.widget { method public void setSingleLine(); method public void setSingleLine(boolean); method public final void setSpannableFactory(android.text.Spannable.Factory); + method public void setSuggestionsEnabled(boolean); method public final void setText(java.lang.CharSequence); method public void setText(java.lang.CharSequence, android.widget.TextView.BufferType); method public final void setText(char[], int, int); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index d58c72b4a846..8fcf6025ad36 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -16,11 +16,6 @@ package android.widget; -import com.android.internal.util.FastMath; -import com.android.internal.widget.EditableInputConnection; - -import org.xmlpull.v1.XmlPullParserException; - import android.R; import android.content.ClipData; import android.content.ClipData.Item; @@ -129,6 +124,11 @@ import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.RemoteViews.RemoteView; +import com.android.internal.util.FastMath; +import com.android.internal.widget.EditableInputConnection; + +import org.xmlpull.v1.XmlPullParserException; + import java.io.IOException; import java.lang.ref.WeakReference; import java.text.BreakIterator; @@ -320,6 +320,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private int mTextEditSuggestionItemLayout; private SuggestionsPopupWindow mSuggestionsPopupWindow; private SuggestionRangeSpan mSuggestionRangeSpan; + private boolean mSuggestionsEnabled = true; private int mCursorDrawableRes; private final Drawable[] mCursorDrawable = new Drawable[2]; @@ -806,6 +807,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextView_textIsSelectable: mTextIsSelectable = a.getBoolean(attr, false); break; + + case com.android.internal.R.styleable.TextView_suggestionsEnabled: + mSuggestionsEnabled = a.getBoolean(attr, true); + break; } } a.recycle(); @@ -8601,6 +8606,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } void showSuggestions() { + if (!mSuggestionsEnabled || !isTextEditable()) return; + if (mSuggestionsPopupWindow == null) { mSuggestionsPopupWindow = new SuggestionsPopupWindow(); } @@ -8614,6 +8621,31 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + /** + * Some parts of the text can have alternate suggestion text attached. This is typically done by + * the IME by adding {@link SuggestionSpan}s to the text. + * + * When suggestions are enabled (default), this list of suggestions will be displayed when the + * user double taps on these parts of the text. No suggestions are displayed when this value is + * false. Use {@link #setSuggestionsEnabled(boolean)} to change this value. + * + * @return true if the suggestions popup window is enabled. + * + * @attr ref android.R.styleable#TextView_suggestionsEnabled + */ + public boolean isSuggestionsEnabled() { + return mSuggestionsEnabled; + } + + /** + * Enables or disables the suggestion popup. See {@link #isSuggestionsEnabled()}. + * + * @param enabled Whether or not suggestions are enabled. + */ + public void setSuggestionsEnabled(boolean enabled) { + mSuggestionsEnabled = enabled; + } + /** * If provided, this ActionMode.Callback will be used to create the ActionMode when text * selection is initiated in this View. diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 6c18089b5332..ebb70e38dc0a 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -823,6 +823,10 @@ Default value is false. EditText content is always selectable. --> + + + @@ -2877,6 +2881,8 @@ + +