# DynamicBuilders.DynamicString

Artifact: [androidx.wear.protolayout:protolayout-expression](https://developer.android.com/jetpack/androidx/releases/wear-protolayout) [View Source](https://cs.android.com/search?q=file:androidx/wear/protolayout/expression/DynamicBuilders.java+class:androidx.wear.protolayout.expression.DynamicBuilders.DynamicString) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

*** ** * ** ***

<br />

```
@RequiresSchemaVersion(major = 1, minor = 200)
public interface DynamicBuilders.DynamicString extends DynamicBuilders.DynamicType
```

<br />

*** ** * ** ***

Interface defining a dynamic string type.

`https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` string value is subject to being truncated if it's too long.

## Summary

| ### Public methods |
|---|---|
| `default @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#concat(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString other)` Returns a new `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that has the result of concatenating this `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` with `other`. i.e. `result = this + other` The resulted `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` is subject to being truncated if it's too long. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#constant(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html constant)` Creates a constant-valued `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#format(java.lang.String,java.lang.Object...)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html format, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html Object[] args)` Equivalent of `https://developer.android.com/reference/java/lang/String.html#format(java.lang.String, java.lang.Object...)` but supports `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicType`s, and returns a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicDataKey<https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString> dynamicDataKey )` Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that is bound to the value of an item of the State. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#fromByteArray(byte[])(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html byte[] byteArray)` Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` from a byte array generated by `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray()`. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` | `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#fromByteArray(byte[],int,int)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html byte[] byteArray, int offset, int length)` Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` from the provided byte array at the provided offset and length, that was generated by one of the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray()` overloads. |
| `default static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/ConditionScopes.ConditionScope<https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString, https://developer.android.com/reference/java/lang/String.html>` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicBool condition)` Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that is bound to the result of a conditional expression. |
| `default @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html byte[]` | `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray()()` Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into a new byte array that can later be used with `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#fromByteArray(byte[])`. |
| `default int` | `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray(byte[])(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html byte[] byteArray)` Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into the provided byte array, returning the amount of bytes written, that can later be used with `DynamicString.fromByteArray( byteArray, 0, bytesWritten)`. |
| `default int` | `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray(byte[],int,int)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html byte[] byteArray, int offset, int length )` Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into the provided byte array, returning the amount of bytes written, limited by the provided offset and length, that can later be used with `DynamicString.fromByteArray(byteArray, offset, bytesWritten)`. |

| ### Extension functions |
|---|---|
| `default final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 600) https://developer.android.com/reference/androidx/wear/protolayout/expression/LayoutStringUtil.https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString).asLayoutString(kotlin.String)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html staticValue )` Extension for creating a `https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` from a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` |
| `default final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 200) https://developer.android.com/reference/androidx/wear/protolayout/expression/LayoutStringUtil.https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString).asLayoutString(kotlin.String,androidx.wear.protolayout.TypeBuilders.StringLayoutConstraint)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html staticValue, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/TypeBuilders.StringLayoutConstraint layoutConstraint )` Extension for creating a `https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` from a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` |

## Public methods

### concat

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
@RequiresSchemaVersion(major = 1, minor = 200)
default @NonNull DynamicBuilders.DynamicString concat(@NonNull DynamicBuilders.DynamicString other)
```

Returns a new `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that has the result of concatenating this `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` with `other`. i.e. `result = this + other` The resulted `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` is subject to being truncated if it's too long.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString other` | The right hand side operand of the concatenation. |

### constant

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
@RequiresSchemaVersion(major = 1, minor = 200)
default static @NonNull DynamicBuilders.DynamicString constant(@NonNull String constant)
```

Creates a constant-valued `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`. The resulted `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` is subject to being truncated if it's too long.

### format

```
@RequiresSchemaVersion(major = 1, minor = 200)
default static @NonNull DynamicBuilders.DynamicString format(@NonNull String format, @NonNull Object[] args)
```

Equivalent of `https://developer.android.com/reference/java/lang/String.html#format(java.lang.String, java.lang.Object...)` but supports `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicType`s, and returns a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/wear/protolayout/expression/util/DynamicFormatter` |   |

### from

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
@RequiresSchemaVersion(major = 1, minor = 200)
default static @NonNull DynamicBuilders.DynamicString from(
    @NonNull DynamicDataKey<DynamicBuilders.DynamicString> dynamicDataKey
)
```

Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that is bound to the value of an item of the State. The resulted `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` is subject to being truncated if it's too long.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicDataKey<https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString> dynamicDataKey` | The source key to a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicDataBuilders.DynamicDataValue` with a string value. |

### fromByteArray

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
default static @NonNull DynamicBuilders.DynamicString fromByteArray(@NonNull byte[] byteArray)
```

Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` from a byte array generated by `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray()`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the byte array does not contain a valid serialization |

### fromByteArray

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
default static @NonNull DynamicBuilders.DynamicString fromByteArray(@NonNull byte[] byteArray, int offset, int length)
```

Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` from the provided byte array at the provided offset and length, that was generated by one of the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#toDynamicStringByteArray()` overloads.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the byte array does not contain a valid serialization in the provided offset and length |

### onCondition

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
@RequiresSchemaVersion(major = 1, minor = 200)
default static @NonNull ConditionScopes.ConditionScope<DynamicBuilders.DynamicString, String> onCondition(@NonNull DynamicBuilders.DynamicBool condition)
```

Creates a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` that is bound to the result of a conditional expression. It will use the value given in either `https://developer.android.com/reference/androidx/wear/protolayout/expression/ConditionScopes.ConditionScope#use(T)` or `https://developer.android.com/reference/androidx/wear/protolayout/expression/ConditionScopes.IfTrueScope#elseUse(T)` depending on the value yielded from ` condition`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicBool condition` | The value used for evaluting this condition. |

### toDynamicStringByteArray

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
default @NonNull byte[] toDynamicStringByteArray()
```

Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into a new byte array that can later be used with `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString#fromByteArray(byte[])`.

### toDynamicStringByteArray

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
default int toDynamicStringByteArray(@NonNull byte[] byteArray)
```

Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into the provided byte array, returning the amount of bytes written, that can later be used with `DynamicString.fromByteArray( byteArray, 0, bytesWritten)`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the byte array is too small |

### toDynamicStringByteArray

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

```
default int toDynamicStringByteArray(
    @NonNull byte[] byteArray,
    int offset,
    int length
)
```

Serializes the `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString` into the provided byte array, returning the amount of bytes written, limited by the provided offset and length, that can later be used with `DynamicString.fromByteArray(byteArray, offset, bytesWritten)`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the byte array is too small |

## Extension functions

### LayoutStringUtil.asLayoutString

Artifact: [androidx.wear.protolayout:protolayout](https://developer.android.com/jetpack/androidx/releases/wear-protolayout) [View Source](https://cs.android.com/search?q=file:androidx/wear/protolayout/types/LayoutString.kt+function:asLayoutString)

```
@RequiresSchemaVersion(major = 1, minor = 600)
default final @NonNull LayoutString LayoutStringUtil.asLayoutString(
    @NonNull DynamicBuilders.DynamicString receiver,
    @NonNull String staticValue
)
```

Extension for creating a `https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` from a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html staticValue` | the static value that can be used when the `dynamicValue` can't be resolved. |

### LayoutStringUtil.asLayoutString

Artifact: [androidx.wear.protolayout:protolayout](https://developer.android.com/jetpack/androidx/releases/wear-protolayout) [View Source](https://cs.android.com/search?q=file:androidx/wear/protolayout/types/LayoutString.kt+function:asLayoutString)

```
@RequiresSchemaVersion(major = 1, minor = 200)
default final @NonNull LayoutString LayoutStringUtil.asLayoutString(
    @NonNull DynamicBuilders.DynamicString receiver,
    @NonNull String staticValue,
    @NonNull TypeBuilders.StringLayoutConstraint layoutConstraint
)
```

Extension for creating a `https://developer.android.com/reference/androidx/wear/protolayout/types/LayoutString` from a `https://developer.android.com/reference/androidx/wear/protolayout/expression/DynamicBuilders.DynamicString`

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html staticValue` | the static value that can be used when the `dynamicValue` can't be resolved. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/protolayout/TypeBuilders.StringLayoutConstraint layoutConstraint` | used to correctly measure layout Text element size and align text to ensure that the layout is of a known size during the layout pass regardless of the `dynamicValue` String. |