Loading api/current.txt +7 −0 Original line number Original line Diff line number Diff line Loading @@ -654,6 +654,7 @@ package android { field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int host = 16842792; // 0x1010028 field public static final int host = 16842792; // 0x1010028 field public static final int hyphenationFrequency = 16844024; // 0x10104f8 field public static final int icon = 16842754; // 0x1010002 field public static final int icon = 16842754; // 0x1010002 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconTint = 16843999; // 0x10104df field public static final int iconTint = 16843999; // 0x10104df Loading Loading @@ -32145,6 +32146,9 @@ package android.text { field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2 field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0 field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1 } } public static final class Layout.Alignment extends java.lang.Enum { public static final class Layout.Alignment extends java.lang.Enum { Loading Loading @@ -32343,6 +32347,7 @@ package android.text { method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setHyphenationFrequency(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setLineSpacing(float, float); Loading Loading @@ -41442,6 +41447,7 @@ package android.widget { method public int getHighlightColor(); method public int getHighlightColor(); method public java.lang.CharSequence getHint(); method public java.lang.CharSequence getHint(); method public final android.content.res.ColorStateList getHintTextColors(); method public final android.content.res.ColorStateList getHintTextColors(); method public int getHyphenationFrequency(); method public int getImeActionId(); method public int getImeActionId(); method public java.lang.CharSequence getImeActionLabel(); method public java.lang.CharSequence getImeActionLabel(); method public int getImeOptions(); method public int getImeOptions(); Loading Loading @@ -41548,6 +41554,7 @@ package android.widget { method public final void setHintTextColor(int); method public final void setHintTextColor(int); method public final void setHintTextColor(android.content.res.ColorStateList); method public final void setHintTextColor(android.content.res.ColorStateList); method public void setHorizontallyScrolling(boolean); method public void setHorizontallyScrolling(boolean); method public void setHyphenationFrequency(int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeOptions(int); method public void setImeOptions(int); method public void setIncludeFontPadding(boolean); method public void setIncludeFontPadding(boolean); api/system-current.txt +7 −0 Original line number Original line Diff line number Diff line Loading @@ -726,6 +726,7 @@ package android { field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int host = 16842792; // 0x1010028 field public static final int host = 16842792; // 0x1010028 field public static final int hyphenationFrequency = 16844024; // 0x10104f8 field public static final int icon = 16842754; // 0x1010002 field public static final int icon = 16842754; // 0x1010002 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconTint = 16843999; // 0x10104df field public static final int iconTint = 16843999; // 0x10104df Loading Loading @@ -34370,6 +34371,9 @@ package android.text { field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2 field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0 field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1 } } public static final class Layout.Alignment extends java.lang.Enum { public static final class Layout.Alignment extends java.lang.Enum { Loading Loading @@ -34568,6 +34572,7 @@ package android.text { method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setHyphenationFrequency(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setLineSpacing(float, float); Loading Loading @@ -43978,6 +43983,7 @@ package android.widget { method public int getHighlightColor(); method public int getHighlightColor(); method public java.lang.CharSequence getHint(); method public java.lang.CharSequence getHint(); method public final android.content.res.ColorStateList getHintTextColors(); method public final android.content.res.ColorStateList getHintTextColors(); method public int getHyphenationFrequency(); method public int getImeActionId(); method public int getImeActionId(); method public java.lang.CharSequence getImeActionLabel(); method public java.lang.CharSequence getImeActionLabel(); method public int getImeOptions(); method public int getImeOptions(); Loading Loading @@ -44084,6 +44090,7 @@ package android.widget { method public final void setHintTextColor(int); method public final void setHintTextColor(int); method public final void setHintTextColor(android.content.res.ColorStateList); method public final void setHintTextColor(android.content.res.ColorStateList); method public void setHorizontallyScrolling(boolean); method public void setHorizontallyScrolling(boolean); method public void setHyphenationFrequency(int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeOptions(int); method public void setImeOptions(int); method public void setIncludeFontPadding(boolean); method public void setIncludeFontPadding(boolean); core/java/android/text/DynamicLayout.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,8 @@ public class DynamicLayout extends Layout boolean includepad, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { this(base, display, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR, this(base, display, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR, spacingmult, spacingadd, includepad, StaticLayout.BREAK_STRATEGY_SIMPLE, spacingmult, spacingadd, includepad, StaticLayout.BREAK_STRATEGY_SIMPLE, StaticLayout.HYPHENATION_FREQUENCY_NONE, ellipsize, ellipsizedWidth); ellipsize, ellipsizedWidth); } } Loading @@ -96,7 +97,7 @@ public class DynamicLayout extends Layout TextPaint paint, TextPaint paint, int width, Alignment align, TextDirectionHeuristic textDir, int width, Alignment align, TextDirectionHeuristic textDir, float spacingmult, float spacingadd, float spacingmult, float spacingadd, boolean includepad, int breakStrategy, boolean includepad, int breakStrategy, int hyphenationFrequency, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { super((ellipsize == null) super((ellipsize == null) ? display ? display Loading @@ -122,6 +123,7 @@ public class DynamicLayout extends Layout mIncludePad = includepad; mIncludePad = includepad; mBreakStrategy = breakStrategy; mBreakStrategy = breakStrategy; mHyphenationFrequency = hyphenationFrequency; /* /* * This is annoying, but we can't refer to the layout until * This is annoying, but we can't refer to the layout until Loading Loading @@ -293,7 +295,8 @@ public class DynamicLayout extends Layout .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsize(mEllipsizeAt) .setEllipsize(mEllipsizeAt) .setBreakStrategy(mBreakStrategy); .setBreakStrategy(mBreakStrategy) .setHyphenationFrequency(mHyphenationFrequency); reflowed.generate(b, false, true); reflowed.generate(b, false, true); int n = reflowed.getLineCount(); int n = reflowed.getLineCount(); Loading Loading @@ -719,6 +722,7 @@ public class DynamicLayout extends Layout private int mEllipsizedWidth; private int mEllipsizedWidth; private TextUtils.TruncateAt mEllipsizeAt; private TextUtils.TruncateAt mEllipsizeAt; private int mBreakStrategy; private int mBreakStrategy; private int mHyphenationFrequency; private PackedIntVector mInts; private PackedIntVector mInts; private PackedObjectVector<Directions> mObjects; private PackedObjectVector<Directions> mObjects; Loading core/java/android/text/Layout.java +29 −0 Original line number Original line Diff line number Diff line Loading @@ -71,6 +71,35 @@ public abstract class Layout { */ */ public static final int BREAK_STRATEGY_BALANCED = 2; public static final int BREAK_STRATEGY_BALANCED = 2; /** @hide */ @IntDef({HYPHENATION_FREQUENCY_NORMAL, HYPHENATION_FREQUENCY_FULL, HYPHENATION_FREQUENCY_NONE}) @Retention(RetentionPolicy.SOURCE) public @interface HyphenationFrequency {} /** * Value for hyphenation frequency indicating no automatic hyphenation. Useful * for backward compatibility, and for cases where the automatic hyphenation algorithm results * in incorrect hyphenation. Mid-word breaks may still happen when a word is wider than the * layout and there is otherwise no valid break. Soft hyphens are ignored and will not be used * as suggestions for potential line breaks. */ public static final int HYPHENATION_FREQUENCY_NONE = 0; /** * Value for hyphenation frequency indicating a light amount of automatic hyphenation, which * is a conservative default. Useful for informal cases, such as short sentences or chat * messages. */ public static final int HYPHENATION_FREQUENCY_NORMAL = 1; /** * Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical * in typography. Useful for running text and where it's important to put the maximum amount of * text in a screen with limited space. */ public static final int HYPHENATION_FREQUENCY_FULL = 2; private static final ParagraphStyle[] NO_PARA_SPANS = private static final ParagraphStyle[] NO_PARA_SPANS = ArrayUtils.emptyArray(ParagraphStyle.class); ArrayUtils.emptyArray(ParagraphStyle.class); Loading core/java/android/text/StaticLayout.java +19 −3 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ public class StaticLayout extends Layout { b.mEllipsize = null; b.mEllipsize = null; b.mMaxLines = Integer.MAX_VALUE; b.mMaxLines = Integer.MAX_VALUE; b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE; b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE; b.mHyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NONE; b.mMeasuredText = MeasuredText.obtain(); b.mMeasuredText = MeasuredText.obtain(); return b; return b; Loading Loading @@ -275,6 +276,19 @@ public class StaticLayout extends Layout { return this; return this; } } /** * Set hyphenation frequency, to control the amount of automatic hyphenation used. The * default is {@link Layout#HYPHENATION_FREQUENCY_NONE}. * * @param hyphenationFrequency hyphenation frequency for the paragraph * @return this builder, useful for chaining * @see android.widget.TextView#setHyphenationFrequency */ public Builder setHyphenationFrequency(@HyphenationFrequency int hyphenationFrequency) { mHyphenationFrequency = hyphenationFrequency; return this; } /** /** * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * pixels. For lines past the last element in the array, the last element repeats. * pixels. For lines past the last element in the array, the last element repeats. Loading Loading @@ -302,7 +316,8 @@ public class StaticLayout extends Layout { * the native code is as follows. * the native code is as follows. * * * For each paragraph, do a nSetupParagraph, which sets paragraph text, line width, tab * For each paragraph, do a nSetupParagraph, which sets paragraph text, line width, tab * stops, break strategy (and possibly other parameters in the future). * stops, break strategy, and hyphenation frequency (and possibly other parameters in the * future). * * * Then, for each run within the paragraph: * Then, for each run within the paragraph: * - setLocale (this must be done at least for the first run, optional afterwards) * - setLocale (this must be done at least for the first run, optional afterwards) Loading Loading @@ -377,6 +392,7 @@ public class StaticLayout extends Layout { TextUtils.TruncateAt mEllipsize; TextUtils.TruncateAt mEllipsize; int mMaxLines; int mMaxLines; int mBreakStrategy; int mBreakStrategy; int mHyphenationFrequency; Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); Loading Loading @@ -644,7 +660,7 @@ public class StaticLayout extends Layout { nSetupParagraph(b.mNativePtr, chs, paraEnd - paraStart, nSetupParagraph(b.mNativePtr, chs, paraEnd - paraStart, firstWidth, firstWidthLineCount, restWidth, firstWidth, firstWidthLineCount, restWidth, variableTabStops, TAB_INCREMENT, b.mBreakStrategy); variableTabStops, TAB_INCREMENT, b.mBreakStrategy, b.mHyphenationFrequency); // measurement has to be done before performing line breaking // measurement has to be done before performing line breaking // but we don't want to recompute fontmetrics or span ranges the // but we don't want to recompute fontmetrics or span ranges the Loading Loading @@ -1153,7 +1169,7 @@ public class StaticLayout extends Layout { // Set up paragraph text and settings; done as one big method to minimize jni crossings // Set up paragraph text and settings; done as one big method to minimize jni crossings private static native void nSetupParagraph(long nativePtr, char[] text, int length, private static native void nSetupParagraph(long nativePtr, char[] text, int length, float firstWidth, int firstWidthLineCount, float restWidth, float firstWidth, int firstWidthLineCount, float restWidth, int[] variableTabStops, int defaultTabStop, int breakStrategy); int[] variableTabStops, int defaultTabStop, int breakStrategy, int hyphenationFrequency); private static native float nAddStyleRun(long nativePtr, long nativePaint, private static native float nAddStyleRun(long nativePtr, long nativePaint, long nativeTypeface, int start, int end, boolean isRtl); long nativeTypeface, int start, int end, boolean isRtl); Loading Loading
api/current.txt +7 −0 Original line number Original line Diff line number Diff line Loading @@ -654,6 +654,7 @@ package android { field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int host = 16842792; // 0x1010028 field public static final int host = 16842792; // 0x1010028 field public static final int hyphenationFrequency = 16844024; // 0x10104f8 field public static final int icon = 16842754; // 0x1010002 field public static final int icon = 16842754; // 0x1010002 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconTint = 16843999; // 0x10104df field public static final int iconTint = 16843999; // 0x10104df Loading Loading @@ -32145,6 +32146,9 @@ package android.text { field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2 field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0 field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1 } } public static final class Layout.Alignment extends java.lang.Enum { public static final class Layout.Alignment extends java.lang.Enum { Loading Loading @@ -32343,6 +32347,7 @@ package android.text { method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setHyphenationFrequency(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setLineSpacing(float, float); Loading Loading @@ -41442,6 +41447,7 @@ package android.widget { method public int getHighlightColor(); method public int getHighlightColor(); method public java.lang.CharSequence getHint(); method public java.lang.CharSequence getHint(); method public final android.content.res.ColorStateList getHintTextColors(); method public final android.content.res.ColorStateList getHintTextColors(); method public int getHyphenationFrequency(); method public int getImeActionId(); method public int getImeActionId(); method public java.lang.CharSequence getImeActionLabel(); method public java.lang.CharSequence getImeActionLabel(); method public int getImeOptions(); method public int getImeOptions(); Loading Loading @@ -41548,6 +41554,7 @@ package android.widget { method public final void setHintTextColor(int); method public final void setHintTextColor(int); method public final void setHintTextColor(android.content.res.ColorStateList); method public final void setHintTextColor(android.content.res.ColorStateList); method public void setHorizontallyScrolling(boolean); method public void setHorizontallyScrolling(boolean); method public void setHyphenationFrequency(int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeOptions(int); method public void setImeOptions(int); method public void setIncludeFontPadding(boolean); method public void setIncludeFontPadding(boolean);
api/system-current.txt +7 −0 Original line number Original line Diff line number Diff line Loading @@ -726,6 +726,7 @@ package android { field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int horizontalSpacing = 16843028; // 0x1010114 field public static final int host = 16842792; // 0x1010028 field public static final int host = 16842792; // 0x1010028 field public static final int hyphenationFrequency = 16844024; // 0x10104f8 field public static final int icon = 16842754; // 0x1010002 field public static final int icon = 16842754; // 0x1010002 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconPreview = 16843337; // 0x1010249 field public static final int iconTint = 16843999; // 0x10104df field public static final int iconTint = 16843999; // 0x10104df Loading Loading @@ -34370,6 +34371,9 @@ package android.text { field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1 field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2 field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0 field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1 } } public static final class Layout.Alignment extends java.lang.Enum { public static final class Layout.Alignment extends java.lang.Enum { Loading Loading @@ -34568,6 +34572,7 @@ package android.text { method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setHyphenationFrequency(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setLineSpacing(float, float); Loading Loading @@ -43978,6 +43983,7 @@ package android.widget { method public int getHighlightColor(); method public int getHighlightColor(); method public java.lang.CharSequence getHint(); method public java.lang.CharSequence getHint(); method public final android.content.res.ColorStateList getHintTextColors(); method public final android.content.res.ColorStateList getHintTextColors(); method public int getHyphenationFrequency(); method public int getImeActionId(); method public int getImeActionId(); method public java.lang.CharSequence getImeActionLabel(); method public java.lang.CharSequence getImeActionLabel(); method public int getImeOptions(); method public int getImeOptions(); Loading Loading @@ -44084,6 +44090,7 @@ package android.widget { method public final void setHintTextColor(int); method public final void setHintTextColor(int); method public final void setHintTextColor(android.content.res.ColorStateList); method public final void setHintTextColor(android.content.res.ColorStateList); method public void setHorizontallyScrolling(boolean); method public void setHorizontallyScrolling(boolean); method public void setHyphenationFrequency(int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeActionLabel(java.lang.CharSequence, int); method public void setImeOptions(int); method public void setImeOptions(int); method public void setIncludeFontPadding(boolean); method public void setIncludeFontPadding(boolean);
core/java/android/text/DynamicLayout.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,8 @@ public class DynamicLayout extends Layout boolean includepad, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { this(base, display, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR, this(base, display, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR, spacingmult, spacingadd, includepad, StaticLayout.BREAK_STRATEGY_SIMPLE, spacingmult, spacingadd, includepad, StaticLayout.BREAK_STRATEGY_SIMPLE, StaticLayout.HYPHENATION_FREQUENCY_NONE, ellipsize, ellipsizedWidth); ellipsize, ellipsizedWidth); } } Loading @@ -96,7 +97,7 @@ public class DynamicLayout extends Layout TextPaint paint, TextPaint paint, int width, Alignment align, TextDirectionHeuristic textDir, int width, Alignment align, TextDirectionHeuristic textDir, float spacingmult, float spacingadd, float spacingmult, float spacingadd, boolean includepad, int breakStrategy, boolean includepad, int breakStrategy, int hyphenationFrequency, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { super((ellipsize == null) super((ellipsize == null) ? display ? display Loading @@ -122,6 +123,7 @@ public class DynamicLayout extends Layout mIncludePad = includepad; mIncludePad = includepad; mBreakStrategy = breakStrategy; mBreakStrategy = breakStrategy; mHyphenationFrequency = hyphenationFrequency; /* /* * This is annoying, but we can't refer to the layout until * This is annoying, but we can't refer to the layout until Loading Loading @@ -293,7 +295,8 @@ public class DynamicLayout extends Layout .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsize(mEllipsizeAt) .setEllipsize(mEllipsizeAt) .setBreakStrategy(mBreakStrategy); .setBreakStrategy(mBreakStrategy) .setHyphenationFrequency(mHyphenationFrequency); reflowed.generate(b, false, true); reflowed.generate(b, false, true); int n = reflowed.getLineCount(); int n = reflowed.getLineCount(); Loading Loading @@ -719,6 +722,7 @@ public class DynamicLayout extends Layout private int mEllipsizedWidth; private int mEllipsizedWidth; private TextUtils.TruncateAt mEllipsizeAt; private TextUtils.TruncateAt mEllipsizeAt; private int mBreakStrategy; private int mBreakStrategy; private int mHyphenationFrequency; private PackedIntVector mInts; private PackedIntVector mInts; private PackedObjectVector<Directions> mObjects; private PackedObjectVector<Directions> mObjects; Loading
core/java/android/text/Layout.java +29 −0 Original line number Original line Diff line number Diff line Loading @@ -71,6 +71,35 @@ public abstract class Layout { */ */ public static final int BREAK_STRATEGY_BALANCED = 2; public static final int BREAK_STRATEGY_BALANCED = 2; /** @hide */ @IntDef({HYPHENATION_FREQUENCY_NORMAL, HYPHENATION_FREQUENCY_FULL, HYPHENATION_FREQUENCY_NONE}) @Retention(RetentionPolicy.SOURCE) public @interface HyphenationFrequency {} /** * Value for hyphenation frequency indicating no automatic hyphenation. Useful * for backward compatibility, and for cases where the automatic hyphenation algorithm results * in incorrect hyphenation. Mid-word breaks may still happen when a word is wider than the * layout and there is otherwise no valid break. Soft hyphens are ignored and will not be used * as suggestions for potential line breaks. */ public static final int HYPHENATION_FREQUENCY_NONE = 0; /** * Value for hyphenation frequency indicating a light amount of automatic hyphenation, which * is a conservative default. Useful for informal cases, such as short sentences or chat * messages. */ public static final int HYPHENATION_FREQUENCY_NORMAL = 1; /** * Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical * in typography. Useful for running text and where it's important to put the maximum amount of * text in a screen with limited space. */ public static final int HYPHENATION_FREQUENCY_FULL = 2; private static final ParagraphStyle[] NO_PARA_SPANS = private static final ParagraphStyle[] NO_PARA_SPANS = ArrayUtils.emptyArray(ParagraphStyle.class); ArrayUtils.emptyArray(ParagraphStyle.class); Loading
core/java/android/text/StaticLayout.java +19 −3 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ public class StaticLayout extends Layout { b.mEllipsize = null; b.mEllipsize = null; b.mMaxLines = Integer.MAX_VALUE; b.mMaxLines = Integer.MAX_VALUE; b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE; b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE; b.mHyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NONE; b.mMeasuredText = MeasuredText.obtain(); b.mMeasuredText = MeasuredText.obtain(); return b; return b; Loading Loading @@ -275,6 +276,19 @@ public class StaticLayout extends Layout { return this; return this; } } /** * Set hyphenation frequency, to control the amount of automatic hyphenation used. The * default is {@link Layout#HYPHENATION_FREQUENCY_NONE}. * * @param hyphenationFrequency hyphenation frequency for the paragraph * @return this builder, useful for chaining * @see android.widget.TextView#setHyphenationFrequency */ public Builder setHyphenationFrequency(@HyphenationFrequency int hyphenationFrequency) { mHyphenationFrequency = hyphenationFrequency; return this; } /** /** * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * pixels. For lines past the last element in the array, the last element repeats. * pixels. For lines past the last element in the array, the last element repeats. Loading Loading @@ -302,7 +316,8 @@ public class StaticLayout extends Layout { * the native code is as follows. * the native code is as follows. * * * For each paragraph, do a nSetupParagraph, which sets paragraph text, line width, tab * For each paragraph, do a nSetupParagraph, which sets paragraph text, line width, tab * stops, break strategy (and possibly other parameters in the future). * stops, break strategy, and hyphenation frequency (and possibly other parameters in the * future). * * * Then, for each run within the paragraph: * Then, for each run within the paragraph: * - setLocale (this must be done at least for the first run, optional afterwards) * - setLocale (this must be done at least for the first run, optional afterwards) Loading Loading @@ -377,6 +392,7 @@ public class StaticLayout extends Layout { TextUtils.TruncateAt mEllipsize; TextUtils.TruncateAt mEllipsize; int mMaxLines; int mMaxLines; int mBreakStrategy; int mBreakStrategy; int mHyphenationFrequency; Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); Loading Loading @@ -644,7 +660,7 @@ public class StaticLayout extends Layout { nSetupParagraph(b.mNativePtr, chs, paraEnd - paraStart, nSetupParagraph(b.mNativePtr, chs, paraEnd - paraStart, firstWidth, firstWidthLineCount, restWidth, firstWidth, firstWidthLineCount, restWidth, variableTabStops, TAB_INCREMENT, b.mBreakStrategy); variableTabStops, TAB_INCREMENT, b.mBreakStrategy, b.mHyphenationFrequency); // measurement has to be done before performing line breaking // measurement has to be done before performing line breaking // but we don't want to recompute fontmetrics or span ranges the // but we don't want to recompute fontmetrics or span ranges the Loading Loading @@ -1153,7 +1169,7 @@ public class StaticLayout extends Layout { // Set up paragraph text and settings; done as one big method to minimize jni crossings // Set up paragraph text and settings; done as one big method to minimize jni crossings private static native void nSetupParagraph(long nativePtr, char[] text, int length, private static native void nSetupParagraph(long nativePtr, char[] text, int length, float firstWidth, int firstWidthLineCount, float restWidth, float firstWidth, int firstWidthLineCount, float restWidth, int[] variableTabStops, int defaultTabStop, int breakStrategy); int[] variableTabStops, int defaultTabStop, int breakStrategy, int hyphenationFrequency); private static native float nAddStyleRun(long nativePtr, long nativePaint, private static native float nAddStyleRun(long nativePtr, long nativePaint, long nativeTypeface, int start, int end, boolean isRtl); long nativeTypeface, int start, int end, boolean isRtl); Loading