diff options
| author | Seigo Nonaka <nona@google.com> | 2016-05-25 03:24:10 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-05-25 03:24:11 +0000 |
| commit | 7c8305bcfeef206e8bd00f20077f8106bb66fa6b (patch) | |
| tree | 4ff3f0b341addb3cd93c765d9345164a0d8f1085 /core/java | |
| parent | 9d4e66ece64f6b65d8a902a6f03f945a0fe88868 (diff) | |
| parent | e9f54bfde27327df4b1c820a97df00546cffe1e9 (diff) | |
Merge "Use original theme for SuggestsionsPopupWindow" into nyc-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/widget/Editor.java | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 622567c83617..15bba3a68987 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -76,6 +76,7 @@ import android.util.SparseArray; import android.view.ActionMode; import android.view.ActionMode.Callback; import android.view.ContextMenu; +import android.view.ContextThemeWrapper; import android.view.DisplayListCanvas; import android.view.DragAndDropPermissions; import android.view.DragEvent; @@ -3004,8 +3005,16 @@ public class Editor { protected abstract int getTextOffset(); protected abstract int getVerticalLocalPosition(int line); protected abstract int clipVertically(int positionY); + protected void setUp() { + } public PinnedPopupWindow() { + // Due to calling subclass methods in base constructor, subclass constructor is not + // called before subclass methods, e.g. createPopupWindow or initContentView. To give + // a chance to initialize subclasses, call setUp() method here. + // TODO: It is good to extract non trivial initialization code from constructor. + setUp(); + createPopupWindow(); mPopupWindow.setWindowLayoutType( @@ -3267,8 +3276,7 @@ public class Editor { private boolean mCursorWasVisibleBeforeSuggestions; private boolean mIsShowingUp = false; private SuggestionAdapter mSuggestionsAdapter; - private final TextAppearanceSpan mHighlightSpan = new TextAppearanceSpan( - mTextView.getContext(), mTextView.mTextEditSuggestionHighlightStyle); + private TextAppearanceSpan mHighlightSpan; // TODO: Make mHighlightSpan final. private TextView mAddToDictionaryButton; private TextView mDeleteButton; private ListView mSuggestionListView; @@ -3276,8 +3284,10 @@ public class Editor { private int mContainerMarginWidth; private int mContainerMarginTop; private LinearLayout mContainerView; + private Context mContext; // TODO: Make mContext final. private class CustomPopupWindow extends PopupWindow { + @Override public void dismiss() { if (!isShowing()) { @@ -3301,6 +3311,23 @@ public class Editor { } @Override + protected void setUp() { + mContext = applyDefaultTheme(mTextView.getContext()); + mHighlightSpan = new TextAppearanceSpan(mContext, + mTextView.mTextEditSuggestionHighlightStyle); + } + + private Context applyDefaultTheme(Context originalContext) { + TypedArray a = originalContext.obtainStyledAttributes( + new int[]{com.android.internal.R.attr.isLightTheme}); + boolean isLightTheme = a.getBoolean(0, true); + int themeId = isLightTheme ? R.style.ThemeOverlay_Material_Light + : R.style.ThemeOverlay_Material_Dark; + a.recycle(); + return new ContextThemeWrapper(originalContext, themeId); + } + + @Override protected void createPopupWindow() { mPopupWindow = new CustomPopupWindow(); mPopupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED); @@ -3311,8 +3338,8 @@ public class Editor { @Override protected void initContentView() { - final LayoutInflater inflater = (LayoutInflater) mTextView.getContext(). - getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( + Context.LAYOUT_INFLATER_SERVICE); mContentView = (ViewGroup) inflater.inflate( mTextView.mTextEditSuggestionContainerLayout, null); @@ -3405,8 +3432,8 @@ public class Editor { } private class SuggestionAdapter extends BaseAdapter { - private LayoutInflater mInflater = (LayoutInflater) mTextView.getContext(). - getSystemService(Context.LAYOUT_INFLATER_SERVICE); + private LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService( + Context.LAYOUT_INFLATER_SERVICE); @Override public int getCount() { |
