LineBreakConfig

public final class LineBreakConfig
extends Object implements Parcelable

java.lang.Object
   ↳ android.graphics.text.LineBreakConfig


Specifies the line-break strategies for text wrapping.

See the line-break property for more information.

Summary

Nested classes

class LineBreakConfig.Builder

A builder for creating a LineBreakConfig instance. 

Constants

int HYPHENATION_DISABLED

The hyphenation is disabled.

int HYPHENATION_ENABLED

The hyphenation is enabled.

int HYPHENATION_UNSPECIFIED

No hyphenation preference is specified.

int LINE_BREAK_STYLE_AUTO

A special value for the line breaking style option.

int LINE_BREAK_STYLE_LOOSE

The least restrictive line-break rules are used for line breaking.

int LINE_BREAK_STYLE_NONE

No line-break rules are used for line breaking.

int LINE_BREAK_STYLE_NORMAL

The most common line-break rules are used for line breaking.

int LINE_BREAK_STYLE_NO_BREAK

The line break style that used for preventing automatic line breaking.

int LINE_BREAK_STYLE_STRICT

The most strict line-break rules are used for line breaking.

int LINE_BREAK_STYLE_UNSPECIFIED

No line break style is specified.

int LINE_BREAK_WORD_STYLE_AUTO

A special value for the line breaking word style option.

int LINE_BREAK_WORD_STYLE_NONE

No line-break word style is used for line breaking.

int LINE_BREAK_WORD_STYLE_PHRASE

Line breaking is based on phrases, which results in text wrapping only on meaningful words.

int LINE_BREAK_WORD_STYLE_UNSPECIFIED

No line break word style is specified.

Inherited constants

Fields

public static final Creator<LineBreakConfig> CREATOR

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

boolean equals(Object o)

Indicates whether some other object is "equal to" this one.

int getHyphenation()

Returns a hyphenation preference.

int getLineBreakStyle()

Gets the current line-break style.

int getLineBreakWordStyle()

Gets the current line-break word style.

int hashCode()

Returns a hash code value for the object.

LineBreakConfig merge(LineBreakConfig config)

Generates a new LineBreakConfig instance merged with given config.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

Constants

HYPHENATION_DISABLED

public static final int HYPHENATION_DISABLED

The hyphenation is disabled.

Constant Value: 0 (0x00000000)

HYPHENATION_ENABLED

public static final int HYPHENATION_ENABLED

The hyphenation is enabled. Note: Even if the hyphenation is enabled with a line break strategy LineBreaker#BREAK_STRATEGY_SIMPLE, the hyphenation will not be performed unless a single word cannot meet width constraints.

Constant Value: 1 (0x00000001)

HYPHENATION_UNSPECIFIED

public static final int HYPHENATION_UNSPECIFIED

No hyphenation preference is specified.

This is a special value of hyphenation preference indicating no hyphenation preference is specified. When overriding a LineBreakConfig with another LineBreakConfig with Builder#merge(LineBreakConfig) function, the hyphenation preference of overridden config will be kept if the hyphenation preference of overriding config is HYPHENATION_UNSPECIFIED.

     val override = LineBreakConfig.Builder()
          .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
          .build();  // UNSPECIFIED if no setHyphenation is called.
     val config = LineBreakConfig.Builder()
          .setHyphenation(LineBreakConfig.HYPHENATION_DISABLED)
          .merge(override)
          .build()
     // Here, config has HYPHENATION_DISABLED for line break config and
     // LINE_BREAK_WORD_STYLE_PHRASE for line break word style.
 

This value is resolved to HYPHENATION_ENABLED if this value is used for text layout/rendering.

Constant Value: -1 (0xffffffff)

LINE_BREAK_STYLE_AUTO

public static final int LINE_BREAK_STYLE_AUTO

A special value for the line breaking style option.

The auto option for the line break style set the line break style based on the locale of the text rendering context. You can specify the context locale by TextView.setTextLocales(LocaleList) or Paint.setTextLocales(LocaleList).

In the API ERROR(Build.VERSION_CODES#VANILLA_ICE_CREAM/android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM Build.VERSION_CODES#VANILLA_ICE_CREAM), auto option does followings: - If at least one locale in the locale list contains Japanese script, this option is equivalent to LINE_BREAK_STYLE_STRICT. - Otherwise, this option is equivalent to LINE_BREAK_STYLE_NONE.

Note: future versions may have special line breaking style rules for other locales.

Constant Value: 5 (0x00000005)

LINE_BREAK_STYLE_LOOSE

Added in API level 33
public static final int LINE_BREAK_STYLE_LOOSE

The least restrictive line-break rules are used for line breaking. This setting is typically used for short lines.

Constant Value: 1 (0x00000001)

LINE_BREAK_STYLE_NONE

Added in API level 33
public static final int LINE_BREAK_STYLE_NONE

No line-break rules are used for line breaking.

Constant Value: 0 (0x00000000)

LINE_BREAK_STYLE_NORMAL

Added in API level 33
public static final int LINE_BREAK_STYLE_NORMAL

The most common line-break rules are used for line breaking.

Constant Value: 2 (0x00000002)

LINE_BREAK_STYLE_NO_BREAK

public static final int LINE_BREAK_STYLE_NO_BREAK

The line break style that used for preventing automatic line breaking. This is useful when you want to preserve some words in the same line by using LineBreakConfigSpan or LineBreakConfigSpan.createNoBreakSpan() as a shorthand. Note that even if this style is specified, the grapheme based line break is still performed for preventing clipping text.

Constant Value: 4 (0x00000004)

LINE_BREAK_STYLE_STRICT

Added in API level 33
public static final int LINE_BREAK_STYLE_STRICT

The most strict line-break rules are used for line breaking.

Constant Value: 3 (0x00000003)

LINE_BREAK_STYLE_UNSPECIFIED

public static final int LINE_BREAK_STYLE_UNSPECIFIED

No line break style is specified.

This is a special value of line break style indicating no style value is specified. When overriding a LineBreakConfig with another LineBreakConfig with Builder#merge(LineBreakConfig) function, the line break style of overridden config will be kept if the line break style of overriding config is LINE_BREAK_STYLE_UNSPECIFIED.

     val override = LineBreakConfig.Builder()
          .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
          .build();  // UNSPECIFIED if no setLineBreakStyle is called.
     val config = LineBreakConfig.Builder()
          .setLineBreakStyle(LineBreakConfig.LINE_BREAK_STYLE_STRICT)
          .merge(override)
          .build()
     // Here, config has LINE_BREAK_STYLE_STRICT for line break config and
     // LINE_BREAK_WORD_STYLE_PHRASE for line break word style.
 

This value is resolved to LINE_BREAK_STYLE_NONE if the target SDK version is API Build.VERSION_CODES#UPSIDE_DOWN_CAKE or before and this value is used for text layout/rendering. This value is resolved to LINE_BREAK_STYLE_AUTO if the target SDK version is API ERROR(Build.VERSION_CODES#VANILLA_ICE_CREAM/android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM Build.VERSION_CODES#VANILLA_ICE_CREAM) or after and this value is used for text layout/rendering.

Constant Value: -1 (0xffffffff)

LINE_BREAK_WORD_STYLE_AUTO

public static final int LINE_BREAK_WORD_STYLE_AUTO

A special value for the line breaking word style option.

The auto option for the line break word style does some heuristics based on locales and line count.

In the API ERROR(Build.VERSION_CODES#VANILLA_ICE_CREAM/android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM Build.VERSION_CODES#VANILLA_ICE_CREAM), auto option does followings: - If at least one locale in the locale list contains Korean script, this option is equivalent to LINE_BREAK_WORD_STYLE_PHRASE. - If not, then if at least one locale in the locale list contains Japanese script, this option is equivalent to LINE_BREAK_WORD_STYLE_PHRASE if the result of its line count is less than 5 lines. - Otherwise, this option is equivalent to LINE_BREAK_WORD_STYLE_NONE.

Note: future versions may have special line breaking word style rules for other locales.

Constant Value: 2 (0x00000002)

LINE_BREAK_WORD_STYLE_NONE

Added in API level 33
public static final int LINE_BREAK_WORD_STYLE_NONE

No line-break word style is used for line breaking.

Constant Value: 0 (0x00000000)

LINE_BREAK_WORD_STYLE_PHRASE

Added in API level 33
public static final int LINE_BREAK_WORD_STYLE_PHRASE

Line breaking is based on phrases, which results in text wrapping only on meaningful words.

Support for this line-break word style depends on locale. If the current locale does not support phrase-based text wrapping, this setting has no effect.

Constant Value: 1 (0x00000001)

LINE_BREAK_WORD_STYLE_UNSPECIFIED

public static final int LINE_BREAK_WORD_STYLE_UNSPECIFIED

No line break word style is specified. This is a special value of line break word style indicating no style value is specified. When overriding a LineBreakConfig with another LineBreakConfig with Builder#merge(LineBreakConfig) function, the line break word style of overridden config will be kept if the line break word style of overriding config is LINE_BREAK_WORD_STYLE_UNSPECIFIED.

     val override = LineBreakConfig.Builder()
          .setLineBreakStyle(LineBreakConfig.LINE_BREAK_STYLE_STRICT)
          .build();  // UNSPECIFIED if no setLineBreakWordStyle is called.
     val config = LineBreakConfig.Builder()
          .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
          .merge(override)
          .build()
     // Here, config has LINE_BREAK_STYLE_STRICT for line break config and
     // LINE_BREAK_WORD_STYLE_PHRASE for line break word style.
 
This value is resolved to LINE_BREAK_WORD_STYLE_NONE if the target SDK version is API Build.VERSION_CODES#UPSIDE_DOWN_CAKE or before and this value is used for text layout/rendering. This value is resolved to LINE_BREAK_WORD_STYLE_AUTO if the target SDK version is API ERROR(Build.VERSION_CODES#VANILLA_ICE_CREAM/android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM Build.VERSION_CODES#VANILLA_ICE_CREAM) or after and this value is used for text layout/rendering.

Constant Value: -1 (0xffffffff)

Fields

CREATOR

public static final Creator<LineBreakConfig> CREATOR

Public methods

describeContents

public int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(android.os.Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or CONTENTS_FILE_DESCRIPTOR

equals

Added in API level 33
public boolean equals (Object o)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
o Object: the reference object with which to compare.

Returns
boolean true if this object is the same as the obj argument; false otherwise.

getHyphenation

public int getHyphenation ()

Returns a hyphenation preference.

Returns
int A hyphenation preference. Value is HYPHENATION_UNSPECIFIED, HYPHENATION_ENABLED, or HYPHENATION_DISABLED

getLineBreakStyle

Added in API level 33
public int getLineBreakStyle ()

Gets the current line-break style.

Returns
int The line-break style to be used for text wrapping. Value is LINE_BREAK_STYLE_NONE, LINE_BREAK_STYLE_LOOSE, LINE_BREAK_STYLE_NORMAL, LINE_BREAK_STYLE_STRICT, LINE_BREAK_STYLE_UNSPECIFIED, LINE_BREAK_STYLE_NO_BREAK, or LINE_BREAK_STYLE_AUTO

getLineBreakWordStyle

Added in API level 33
public int getLineBreakWordStyle ()

Gets the current line-break word style.

Returns
int The line-break word style to be used for text wrapping. Value is LINE_BREAK_WORD_STYLE_NONE, LINE_BREAK_WORD_STYLE_PHRASE, LINE_BREAK_WORD_STYLE_UNSPECIFIED, or LINE_BREAK_WORD_STYLE_AUTO

hashCode

Added in API level 33
public int hashCode ()

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

Returns
int a hash code value for this object.

merge

public LineBreakConfig merge (LineBreakConfig config)

Generates a new LineBreakConfig instance merged with given config. If values of passing config are unspecified, the original values are kept. For example, the following code shows how line break config is merged.

     val override = LineBreakConfig.Builder()
          .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
          .build();  // UNSPECIFIED if no setLineBreakStyle is called.
     val config = LineBreakConfig.Builder()
          .setLineBreakStyle(LineBreakConfig.LINE_BREAK_STYLE_STRICT)
          .build();

     val newConfig = config.merge(override)
     // newConfig has LINE_BREAK_STYLE_STRICT of line break style and
     LINE_BREAK_WORD_STYLE_PHRASE of line break word style.
 

Parameters
config LineBreakConfig: an overriding config. This value cannot be null.

Returns
LineBreakConfig newly created instance that is current style merged with passed config. This value cannot be null.

toString

Added in API level 33
public String toString ()

Returns a string representation of the object.

Returns
String a string representation of the object.

writeToParcel

public void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: This value cannot be null.

flags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES