# PrimaryLayout.Builder

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

*** ** * ** ***


```
public final class PrimaryLayout.Builder
```

<br />

*** ** * ** ***

Builder class for `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#Builder(androidx.wear.protolayout.DeviceParametersBuilders.DeviceParameters)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/DeviceParametersBuilders.DeviceParameters deviceParameters )` Creates a builder for the `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` from the given content. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#build()()` Constructs and returns `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` with the provided content and look. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.LayoutElement content)` Sets the additional content to this layout, above the primary chip. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setPrimaryChipContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.LayoutElement compactChip )` Sets the element which is in the slot at the bottom of the layout. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setPrimaryLabelTextContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.LayoutElement primaryLabelText )` Sets the content in the primary label slot which will be above the main content. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setResponsiveContentInsetEnabled(boolean)(boolean enabled)` Changes this `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` to use responsive insets for its content (primary label, secondary label and primary bottom chip) by adding an additional space on the side of this element to avoid that content going off the screen edge. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setSecondaryLabelTextContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.LayoutElement secondaryLabelText )` Sets the content in the primary label slot which will be below the main content. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder` | `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setVerticalSpacerHeight(float)(@https://developer.android.com/reference/androidx/annotation/Dimension(unit = 0) float height)` Sets the vertical spacer height which is used as a space between main content and secondary label if there is any. |

## Public constructors

### Builder

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

```
public Builder(
    @NonNull DeviceParametersBuilders.DeviceParameters deviceParameters
)
```

Creates a builder for the `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` from the given content. Content inside of it can later be set with `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)`, `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setPrimaryChipContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)`, `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setPrimaryLabelTextContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)` and `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setSecondaryLabelTextContent(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement)`.

For optimal layouts across different screen sizes, it is highly recommended to call `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout.Builder#setResponsiveContentInsetEnabled(boolean)`.

## Public methods

### build

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

```
public @NonNull PrimaryLayout build()
```

Constructs and returns `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` with the provided content and look.

### setContent

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

```
public @NonNull PrimaryLayout.Builder setContent(@NonNull LayoutElementBuilders.LayoutElement content)
```

Sets the additional content to this layout, above the primary chip.

The content slot will wrap the elements' height, so the height of the given content must be fixed or set to wrap (`expand` can't be used).

This layout has built-in horizontal margins, so the given content should have width set to `expand` to use all the available space, rather than an explicit width which may lead to clipping.

### setPrimaryChipContent

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

```
public @NonNull PrimaryLayout.Builder setPrimaryChipContent(
    @NonNull LayoutElementBuilders.LayoutElement compactChip
)
```

Sets the element which is in the slot at the bottom of the layout. Note that it is accepted to pass in any `https://developer.android.com/reference/androidx/wear/protolayout/LayoutElementBuilders.LayoutElement`, but it is strongly recommended to add a `https://developer.android.com/reference/androidx/wear/protolayout/material/CompactChip` as the layout is optimized for it.

### setPrimaryLabelTextContent

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

```
public @NonNull PrimaryLayout.Builder setPrimaryLabelTextContent(
    @NonNull LayoutElementBuilders.LayoutElement primaryLabelText
)
```

Sets the content in the primary label slot which will be above the main content.

### setResponsiveContentInsetEnabled

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

```
public @NonNull PrimaryLayout.Builder setResponsiveContentInsetEnabled(boolean enabled)
```

Changes this `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/PrimaryLayout` to use responsive insets for its content (primary label, secondary label and primary bottom chip) by adding an additional space on the side of this element to avoid that content going off the screen edge.

It is highly recommended to call this method with `true` when using this layout to optimize it for different screen sizes.

### setSecondaryLabelTextContent

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

```
public @NonNull PrimaryLayout.Builder setSecondaryLabelTextContent(
    @NonNull LayoutElementBuilders.LayoutElement secondaryLabelText
)
```

Sets the content in the primary label slot which will be below the main content. It is highly recommended to have primary label set when having secondary label.

### setVerticalSpacerHeight

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

```
public @NonNull PrimaryLayout.Builder setVerticalSpacerHeight(@Dimension(unit = 0) float height)
```

Sets the vertical spacer height which is used as a space between main content and secondary label if there is any. If not set, `https://developer.android.com/reference/androidx/wear/protolayout/material/layouts/LayoutDefaults#DEFAULT_VERTICAL_SPACER_HEIGHT()` will be used.