# HorizontalRuler

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/Ruler.kt+class:androidx.compose.ui.layout.HorizontalRuler) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0) Common/AllAndroid/JVM
- Cmn

  ```
  class HorizontalRuler : Ruler
  ```

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.compose.ui.layout.Ruler](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler) ||
|   | ↳ | [androidx.compose.ui.layout.HorizontalRuler](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler) |

*** ** * ** ***

A horizontal `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler`. Defines a line that can be used by parent layouts to align or position their children vertically. The position of the ruler can be retrieved with `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Ruler).current(kotlin.Float)` and can be set with `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` using `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)`.

## Summary

| ### Public companion functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#derived(kotlin.Function2)(calculation: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.(defaultValue: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` whose values are derived from values available in the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`, such as other `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#maxOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` derived from the greater value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler.Companion#maxOf(kotlin.Array)` that supply a value. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#minOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` derived from the least value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler.Companion#minOf(kotlin.Array)` that supply a value. | Cmn |

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#HorizontalRuler()()` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` whose values are directly provided. | Cmn |

## Public companion functions

### derived

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun derived(calculation: Placeable.PlacementScope.(defaultValue: Float) -> Float): HorizontalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` whose values are derived from values available in the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`, such as other `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s.

```kotlin
import androidx.compose.ui.layout.HorizontalRuler
import androidx.compose.ui.unit.Dp

class PaddedRulers(val ruler: HorizontalRuler, val padding: Dp) {
    val top = HorizontalRuler.derived { defaultValue ->
        val rulerValue = ruler.current(Float.NaN)
        if (rulerValue.isNaN()) {
            defaultValue
        } else {
            rulerValue + padding.toPx()
        }
    }
    val bottom = HorizontalRuler.derived { defaultValue ->
        val rulerValue = ruler.current(Float.NaN)
        if (rulerValue.isNaN()) {
            defaultValue
        } else {
            rulerValue - padding.toPx()
        }
    }
}
```

| Parameters |
|---|---|
| `calculation: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.(defaultValue: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | A function that calculates the value of the ruler |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#minOf(kotlin.Array)` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler#maxOf(kotlin.Array)` |   |

### maxOf

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun maxOf(vararg rulers: HorizontalRuler): HorizontalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` derived from the greater value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler.Companion#maxOf(kotlin.Array)` that supply a value. This is the right-most of all provided ruler values.

### minOf

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun minOf(vararg rulers: HorizontalRuler): HorizontalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` derived from the least value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler.Companion#minOf(kotlin.Array)` that supply a value. This is the left-most of all provided ruler values.

## Public constructors

### HorizontalRuler

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
HorizontalRuler()
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` whose values are directly provided. The developer can set the ruler value in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` using `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.VerticalRuler).providesRelative(kotlin.Float)`.