# LayoutElementBuilders.Image.Builder

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/LayoutElementBuilders.java+class:androidx.wear.protolayout.LayoutElementBuilders.Image.Builder) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.0.0)

*** ** * ** ***

<br />

```
public final class LayoutElementBuilders.Image.Builder
```

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image`.

## Summary

| ### Public constructors |
|---|
| `[Builder](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder())()` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` constructor which supports automatic resource registration, paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)`. <br /> |
| `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ProtoLayoutScope scope)` Creates an instance of `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` with automatic resource registration used. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image` | `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#build()()` Builds an instance with values accumulated in this Builder. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setColorFilter(androidx.wear.protolayout.LayoutElementBuilders.ColorFilter)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.ColorFilter colorFilter)` Sets filtering parameters for this image. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setContentScaleMode(int)(int contentScaleMode)` Sets how to scale the image resource inside the bounds specified by width/height if its size does not match those bounds. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setContentScaleMode(androidx.wear.protolayout.LayoutElementBuilders.ContentScaleModeProp)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.ContentScaleModeProp contentScaleMode )` Sets how to scale the image resource inside the bounds specified by width/height if its size does not match those bounds. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setHeight(androidx.wear.protolayout.DimensionBuilders.ImageDimension)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/DimensionBuilders.ImageDimension height)` Sets the height of this image. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ResourceBuilders.ImageResource resource)` Sets the specific resource of the image to render. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource,java.lang.String)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ResourceBuilders.ImageResource resource, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html resourceId )` Sets the specific resource of the image to render. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setModifiers(androidx.wear.protolayout.ModifiersBuilders.Modifiers)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ModifiersBuilders.Modifiers modifiers)` Sets `https://developer.android.com/reference/androidx/wear/protolayout/ModifiersBuilders.Modifiers` for this element. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) [setResourceId](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html resourceId)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` for automatic resource registration. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) [setResourceId](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(androidx.wear.protolayout.TypeBuilders.StringProp))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/TypeBuilders.StringProp resourceId)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` for automatic resource registration. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` | `@https://developer.android.com/reference/androidx/wear/protolayout/expression/RequiresSchemaVersion(major = 1, minor = 0) https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setWidth(androidx.wear.protolayout.DimensionBuilders.ImageDimension)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/DimensionBuilders.ImageDimension width)` Sets the width of this image. |

## Public constructors

### Builder

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

```
public [Builder](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder())()
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` constructor which supports automatic resource registration, paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)`.

Creates an instance of `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder`.

Note that, when using this constructor, it should be paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String)`, and resource used for it needs to be manually registered in ` TileService#onTileResourcesRequest` for Tiles. This constructor can't be mixed with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)`, otherwise an exception will be thrown.

### Builder

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

```
public Builder(@NonNull ProtoLayoutScope scope)
```

Creates an instance of `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder` with automatic resource registration used.

Note that, when using this constructor, it should be paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)`. Additionally, `Resources` object shouldn't be provided in `TileService#onTileResourcesRequest` method for your Tile as resources would be automatically registered. This constructor can't be mixed with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String)`, otherwise an exception will be thrown.

When using this constructor and automatic resource registration, there's no need to provide resources version in `Tile.Builder.setResourcesVersion`, as `https://developer.android.com/reference/androidx/wear/protolayout/ProtoLayoutScope` will handle versioning and changes of the resources automatically. However, setting custom version in `Tile.Builder.setResourcesVersion` is still supported.

## Public methods

### build

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

```
public @NonNull LayoutElementBuilders.Image build()
```

Builds an instance with values accumulated in this Builder.

### setColorFilter

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setColorFilter(@NonNull LayoutElementBuilders.ColorFilter colorFilter)
```

Sets filtering parameters for this image. If not specified, defaults to no filtering.

### setContentScaleMode

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setContentScaleMode(int contentScaleMode)
```

Sets how to scale the image resource inside the bounds specified by width/height if its size does not match those bounds. Defaults to CONTENT_SCALE_MODE_FIT.

### setContentScaleMode

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setContentScaleMode(
    @NonNull LayoutElementBuilders.ContentScaleModeProp contentScaleMode
)
```

Sets how to scale the image resource inside the bounds specified by width/height if its size does not match those bounds. Defaults to CONTENT_SCALE_MODE_FIT.

### setHeight

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setHeight(@NonNull DimensionBuilders.ImageDimension height)
```

Sets the height of this image. If not defined, the image will not be rendered.

### setImageResource

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setImageResource(@NonNull ResourceBuilders.ImageResource resource)
```

Sets the specific resource of the image to render. This method will automatically assign the ID and add the given resource in the resources bundle.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ResourceBuilders.ImageResource resource` | An Image resource, used in the layout in the place of this `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image` element. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if this method is called without `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` or after `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String)` was already called. |

### setImageResource

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setImageResource(
    @NonNull ResourceBuilders.ImageResource resource,
    @NonNull String resourceId
)
```

Sets the specific resource of the image to render. This method will automatically add the given resource in the resources bundle.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/ResourceBuilders.ImageResource resource` | An Image resource, used in the layout in the place of this `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image` element. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html resourceId` | The ID of the resource |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if this method is called without `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` or after `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String)` was already called. |

### setModifiers

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setModifiers(@NonNull ModifiersBuilders.Modifiers modifiers)
```

Sets `https://developer.android.com/reference/androidx/wear/protolayout/ModifiersBuilders.Modifiers` for this element.

### setResourceId

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder [setResourceId](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(java.lang.String))(@NonNull String resourceId)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` for automatic resource registration.

Sets the resource_id of the image to render. This must exist in the supplied resource bundle.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if this method is called with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` or after `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` was already called. |

### setResourceId

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder [setResourceId](https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setResourceId(androidx.wear.protolayout.TypeBuilders.StringProp))(@NonNull TypeBuilders.StringProp resourceId)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` paired with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` for automatic resource registration.

Sets the resource_id of the image to render. This must exist in the supplied resource bundle.

Note that this field only supports static values.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if this method is called with `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#Builder(androidx.wear.protolayout.ProtoLayoutScope)` or after `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.Image.Builder#setImageResource(androidx.wear.protolayout.ResourceBuilders.ImageResource)` was already called. |

### setWidth

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

```
@RequiresSchemaVersion(major = 1, minor = 0)
public @NonNull LayoutElementBuilders.Image.Builder setWidth(@NonNull DimensionBuilders.ImageDimension width)
```

Sets the width of this image. If not defined, the image will not be rendered.