diff --git a/ui/ui-layout/api/0.1.0-dev12.txt b/ui/ui-layout/api/0.1.0-dev12.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/0.1.0-dev12.txt
+++ b/ui/ui-layout/api/0.1.0-dev12.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev12.txt b/ui/ui-layout/api/restricted_0.1.0-dev12.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev12.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 3d16a4f..fc1781f 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -57,12 +57,6 @@
   public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
   }
 
-  @Deprecated public enum ColumnAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
-    enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
-  }
-
   public final class ColumnKt {
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
   }
@@ -71,7 +65,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.ColumnScope! INSTANCE;
   }
@@ -409,12 +402,6 @@
     enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
   }
 
-  @Deprecated public enum RowAlign {
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
-    enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
-  }
-
   public final class RowColumnImplKt {
   }
 
@@ -426,7 +413,6 @@
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
     method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
-    method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
     method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
     field public static final androidx.ui.layout.RowScope! INSTANCE;
   }
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
index 40fc1f4..bf55656 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
@@ -36,11 +36,11 @@
  * proportionally to their weight based on the remaining available space.
  *
  * When none of its children have weights, a [Column] will be as small as possible to fit its
- * children one on top of the other. In order to change the size of the [Column], use the
- * [LayoutHeight] modifiers; e.g. to make it fill the available height [LayoutWidth.Fill] can be
- * used. If at least one child of a [Column] has a [weight][ColumnScope.weight],
- * the [Column] will fill the available space, so there is no need for [LayoutWidth.Fill]. However,
- * if [Column]'s size should be limited, the [LayoutHeight] or [LayoutHeight.Max] layout
+ * children one on top of the other. In order to change the height of the [Column], use the
+ * [Modifier.height] modifiers; e.g. to make it fill the available height [Modifier.fillMaxHeight]
+ * can be used. If at least one child of a [Column] has a [weight][ColumnScope.weight],
+ * the [Column] will fill the available height, so there is no need for [Modifier.fillMaxHeight].
+ * However, if [Column]'s size should be limited, the [Modifier.height] or [Modifier.size] layout
  * modifiers should be applied.
  *
  * When the size of the [Column] is larger than the sum of its children sizes, a
@@ -75,16 +75,6 @@
     )
 }
 
-@Deprecated(
-    "ColumnAlign is deprecated. Please use Alignment instead.",
-    ReplaceWith("Alignment", "androidx.ui.core.Alignment")
-)
-enum class ColumnAlign {
-    Start,
-    Center,
-    End
-}
-
 /**
  * Scope for the children of [Column].
  */
@@ -98,17 +88,6 @@
      */
     fun Modifier.gravity(align: Alignment.Horizontal) = this + GravityModifier(align)
 
-    @Deprecated(
-        "gravity(ColumnAlign) is deprecated. Please use gravity instead.",
-        ReplaceWith("gravity(align)")
-    )
-    @Suppress("Deprecation")
-    fun Modifier.gravity(align: ColumnAlign) = this + when (align) {
-        ColumnAlign.Start -> GravityModifier(Alignment.Start)
-        ColumnAlign.Center -> GravityModifier(Alignment.CenterHorizontally)
-        ColumnAlign.End -> GravityModifier(Alignment.End)
-    }
-
     /**
      * Position the element horizontally such that its [alignmentLine] aligns with sibling elements
      * also configured to [alignWithSiblings]. [alignWithSiblings] is a form of [gravity],
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
index c4d7bb3..b58ef9d 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
@@ -34,11 +34,11 @@
  * proportionally to their weight based on the remaining available space.
  *
  * When none of its children have weights, a [Row] will be as small as possible to fit its
- * children one next to the other. In order to change the size of the [Row], use the
- * [LayoutWidth] modifiers; e.g. to make it fill the available width [LayoutWidth.Fill] can be used.
- * If at least one child of a [Row] has a [weight][RowScope.weight], the [Row] will
- * fill the available space, so there is no need for [LayoutWidth.Fill]. However, if [Row]'s
- * size should be limited, the [LayoutWidth] or [LayoutWidth.Max] layout modifiers should be
+ * children one next to the other. In order to change the width of the [Row], use the
+ * [Modifier.width] modifiers; e.g. to make it fill the available width [Modifier.fillMaxWidth]
+ * can be used. If at least one child of a [Row] has a [weight][RowScope.weight], the [Row] will
+ * fill the available width, so there is no need for [Modifier.fillMaxWidth]. However, if [Row]'s
+ * size should be limited, the [Modifier.width] or [Modifier.size] layout modifiers should be
  * applied.
  *
  * When the size of the [Row] is larger than the sum of its children sizes, a
@@ -73,16 +73,6 @@
     )
 }
 
-@Deprecated(
-    "RowAlign is deprecated. Please use Alignment instead.",
-    ReplaceWith("Alignment", "androidx.ui.core.Alignment")
-)
-enum class RowAlign {
-    Top,
-    Center,
-    Bottom
-}
-
 /**
  * Scope for the children of [Row].
  */
@@ -96,17 +86,6 @@
      */
     fun Modifier.gravity(align: Alignment.Vertical) = this + GravityModifier(align)
 
-    @Deprecated(
-        "gravity(RowAlign) is deprecated. Please use gravity instead.",
-        ReplaceWith("gravity(align)")
-    )
-    @Suppress("Deprecation")
-    fun Modifier.gravity(align: RowAlign) = this + when (align) {
-        RowAlign.Top -> GravityModifier(Alignment.Top)
-        RowAlign.Center -> GravityModifier(Alignment.CenterVertically)
-        RowAlign.Bottom -> GravityModifier(Alignment.Bottom)
-    }
-
     /**
      * Position the element vertically such that its [alignmentLine] aligns with sibling elements
      * also configured to [alignWithSiblings]. [alignWithSiblings] is a form of [gravity],
