Notifications: Fix bad layout for long texts

am: 62be439d26

Change-Id: Ia0f6fe64cc853dcdaf84910055cf5a8b1e163ddd
This commit is contained in:
Adrian Roos
2016-12-08 00:35:59 +00:00
committed by android-build-merger
2 changed files with 123 additions and 3 deletions

View File

@@ -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);

View File

@@ -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());
}
}