Fix unexpected truncation again.

Unexpected truncation happens again after [1].
This is fixed by setting match_parent into the container LinearLayout.

For the unexpected truncation of Holo Theme is came from other but
related root cause. To calculate the window and container width,
need to add container padding in addition to the maximum width of
the text view. Otherwise the width of the container view will be
shrunk and the contents will be truncated. This only happens on
Holo Theme since the padding of the container is zero on Material
Theme.

I manually confirmed this CL doesn't revive following issues
- 28034210
- 27341560

[1]: I67886a752ef110d3433dddd6aa8447a9027f8e19
[2]: I69b258687b4bf5510d9b2c3e690c88106bf893f5

Bug: 28266493
Bug: 28281740
Change-Id: Ie6d274714ac08080dc22aeb8ecd8b7729cb634cd
This commit is contained in:
Seigo Nonaka
2016-04-20 15:45:34 +09:00
parent 0fb51357af
commit 77972bbf2c
3 changed files with 12 additions and 13 deletions

View File

@@ -3251,6 +3251,7 @@ public class Editor {
private final SuggestionSpanInfo mMisspelledSpanInfo = new SuggestionSpanInfo();
private int mContainerMarginWidth;
private int mContainerMarginTop;
private LinearLayout mContainerView;
private class CustomPopupWindow extends PopupWindow {
@Override
@@ -3288,20 +3289,19 @@ public class Editor {
protected void initContentView() {
final LayoutInflater inflater = (LayoutInflater) mTextView.getContext().
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ViewGroup relativeLayout = (ViewGroup) inflater.inflate(
mContentView = (ViewGroup) inflater.inflate(
mTextView.mTextEditSuggestionContainerLayout, null);
final LinearLayout suggestionWindowContainer =
(LinearLayout) relativeLayout.findViewById(
com.android.internal.R.id.suggestionWindowContainer);
mContainerView = (LinearLayout) mContentView.findViewById(
com.android.internal.R.id.suggestionWindowContainer);
ViewGroup.MarginLayoutParams lp =
(ViewGroup.MarginLayoutParams) suggestionWindowContainer.getLayoutParams();
(ViewGroup.MarginLayoutParams) mContainerView.getLayoutParams();
mContainerMarginWidth = lp.leftMargin + lp.rightMargin;
mContainerMarginTop = lp.topMargin;
mClippingLimitLeft = lp.leftMargin;
mClippingLimitRight = lp.rightMargin;
mSuggestionListView = (ListView) relativeLayout.findViewById(
mSuggestionListView = (ListView) mContentView.findViewById(
com.android.internal.R.id.suggestionContainer);
mSuggestionsAdapter = new SuggestionAdapter();
@@ -3314,9 +3314,7 @@ public class Editor {
mSuggestionInfos[i] = new SuggestionInfo();
}
mContentView = relativeLayout;
mAddToDictionaryButton = (TextView) relativeLayout.findViewById(
mAddToDictionaryButton = (TextView) mContentView.findViewById(
com.android.internal.R.id.addToDictionaryButton);
mAddToDictionaryButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
@@ -3349,7 +3347,7 @@ public class Editor {
}
});
mDeleteButton = (TextView) relativeLayout.findViewById(
mDeleteButton = (TextView) mContentView.findViewById(
com.android.internal.R.id.deleteButton);
mDeleteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
@@ -3461,7 +3459,8 @@ public class Editor {
mDeleteButton.measure(horizontalMeasure, verticalMeasure);
width = Math.max(width, mDeleteButton.getMeasuredWidth());
width += mContainerMarginWidth;
width += mContainerView.getPaddingLeft() + mContainerView.getPaddingRight()
+ mContainerMarginWidth;
// Enforce the width based on actual text widths
mContentView.measure(

View File

@@ -19,7 +19,7 @@
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/suggestionWindowContainer"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:elevation="@android:dimen/text_edit_floating_toolbar_elevation"

View File

@@ -21,7 +21,7 @@
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/suggestionWindowContainer"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/floatingToolbarPopupBackgroundDrawable"
android:elevation="@android:dimen/text_edit_floating_toolbar_elevation"