diff options
| author | 2016-12-08 00:35:59 +0000 | |
|---|---|---|
| committer | 2016-12-08 00:35:59 +0000 | |
| commit | 52e364e4bade7d085ab3be95bdb5eaf93bfa0865 (patch) | |
| tree | f43f63192df28dd499a2a8826439d238a762cf56 | |
| parent | 4bc6d41f10d4c31cc2bb6db7e1498a0a74edc31d (diff) | |
| parent | 62be439d26a9e0748d4626bed8ffa117e39764a2 (diff) | |
Notifications: Fix bad layout for long texts
am: 62be439d26
Change-Id: Ia0f6fe64cc853dcdaf84910055cf5a8b1e163ddd
| -rw-r--r-- | core/java/com/android/internal/widget/ImageFloatingTextView.java | 10 | ||||
| -rw-r--r-- | core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java | 116 |
2 files changed, 123 insertions, 3 deletions
diff --git a/core/java/com/android/internal/widget/ImageFloatingTextView.java b/core/java/com/android/internal/widget/ImageFloatingTextView.java index 358be604f847..a5d2bf3b68d3 100644 --- a/core/java/com/android/internal/widget/ImageFloatingTextView.java +++ b/core/java/com/android/internal/widget/ImageFloatingTextView.java @@ -71,10 +71,14 @@ public class ImageFloatingTextView extends TextView { .setTextDirection(getTextDirectionHeuristic()) .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) .setIncludePad(getIncludeFontPadding()) - .setEllipsize(shouldEllipsize ? effectiveEllipsize : null) - .setEllipsizedWidth(ellipsisWidth) .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) - .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL); + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) + .setMaxLines(getMaxLines() >= 0 ? getMaxLines() : Integer.MAX_VALUE); + if (shouldEllipsize) { + builder.setEllipsize(effectiveEllipsize) + .setEllipsizedWidth(ellipsisWidth); + } + // we set the endmargin on the requested number of lines. int endMargin = getContext().getResources().getDimensionPixelSize( R.dimen.notification_content_picture_margin); diff --git a/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java new file mode 100644 index 000000000000..5dc07c235c16 --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.widget; + +import static org.junit.Assert.assertEquals; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; +import android.view.View.MeasureSpec; +import android.widget.TextView; + +import org.junit.Before; +import org.junit.Test; + +@SmallTest +public class ImageFloatingTextViewTest { + + private Context mContext; + private ImageFloatingTextView mView; + private TextView mTextView; + + @Before + public void setup() { + mContext = InstrumentationRegistry.getTargetContext(); + mView = new ImageFloatingTextView(mContext, null, 0, 0); + mTextView = new TextView(mContext, null, 0, 0); + mTextView.setMaxLines(9); + } + + @Test + public void testEmpty() { + parametrizedTest(""); + } + + @Test + public void testSingleLine() { + parametrizedTest("Hello, World!"); + } + + @Test + public void testTwoLine() { + parametrizedTest("Hello, World!\nWhat a nice day!"); + } + + @Test + public void testShort() { + parametrizedTest("Hello, World! What a nice day! Let's try some more text. " + + "Yada yada, yada yada. Lorem ipsum dolor sit amet."); + } + + @Test + public void testLong() { + parametrizedTest("Hello, World! What a nice day! Let's try some more text. " + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet." + + "Yada yada, yada yada. Lorem ipsum dolor sit amet."); + } + + private void parametrizedTest(CharSequence text) { + int heightMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST); + int widthMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.EXACTLY); + + mTextView.setText(text); + mView.setText(text); + + mTextView.measure(widthMeasureSpec, heightMeasureSpec); + mView.measure(widthMeasureSpec, heightMeasureSpec); + + assertEquals(mTextView.getMeasuredHeight(), mView.getMeasuredHeight()); + } +} |