Removal of FlexRow/FlexColumn
Bug: 145599478
Test: tests passed + manually checked demo
Change-Id: If9ea0ec096578f5ed70547614aad0a02580fc8bf
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
index 2d18bc2..73c48ee 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
@@ -14,6 +14,9 @@
* limitations under the License.
*/
+// TODO(soboleva) Remove deprecated FlexColumn/FlexRow
+@file:Suppress("DEPRECATION")
+
package androidx.compose.benchmark.realworld4
/**
diff --git a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
index bf87f44..2c54406 100644
--- a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
+++ b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
@@ -20,11 +20,11 @@
import androidx.compose.State
import androidx.compose.state
import androidx.compose.unaryPlus
-import androidx.ui.core.Alignment
+import androidx.ui.core.Modifier
import androidx.ui.core.Text
-import androidx.ui.layout.Align
import androidx.ui.layout.Column
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutAlign
+import androidx.ui.layout.Row
import androidx.ui.material.Checkbox
import androidx.ui.material.MaterialTheme
import androidx.ui.material.surface.Surface
@@ -47,15 +47,9 @@
Surface {
Column {
repeat(amountOfCheckboxes) {
- FlexRow {
- inflexible {
- Text(text = "Check Me!")
- }
- expanded(1f) {
- Align(alignment = Alignment.CenterRight) {
- CheckboxWithState()
- }
- }
+ Row {
+ Text(text = "Check Me!")
+ CheckboxWithState(LayoutFlexible(1f) + LayoutAlign.CenterRight)
}
}
}
@@ -69,12 +63,13 @@
}
@Composable
- fun CheckboxWithState() {
+ fun CheckboxWithState(modifier: Modifier = Modifier.None) {
val state = +state { false }
states.add(state)
Checkbox(
checked = state.value,
- onCheckedChange = { state.value = !state.value }
+ onCheckedChange = { state.value = !state.value },
+ modifier = modifier
)
}
}
diff --git a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
index 4f0aa48..52d9047 100644
--- a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
+++ b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
@@ -25,11 +25,11 @@
import androidx.ui.foundation.ColoredRect
import androidx.ui.graphics.Color
import androidx.ui.layout.Column
-import androidx.ui.layout.FlexColumn
import androidx.ui.foundation.HorizontalScroller
import androidx.ui.layout.Row
import androidx.ui.foundation.ScrollerPosition
import androidx.ui.foundation.VerticalScroller
+import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.layout.LayoutExpandedWidth
import androidx.ui.layout.LayoutGravity
import androidx.ui.material.MaterialTheme
@@ -71,36 +71,34 @@
Row(LayoutExpandedWidth) {
repeat(6) {
WithDensity {
- FlexColumn {
+ Column(LayoutExpandedHeight) {
val color = +memo {
val red = Random.nextInt(256)
val green = Random.nextInt(256)
val blue = Random.nextInt(256)
Color(red = red, green = green, blue = blue)
}
- inflexible {
- ColoredRect(
- width = 350.px.toDp(),
- height = 350.px.toDp(),
- color = color
- )
+ ColoredRect(
+ width = 350.px.toDp(),
+ height = 350.px.toDp(),
+ color = color
+ )
+ Text(
+ text = "Some title",
+ style = TextStyle(Color.Black, 60.px.toSp())
+ )
+ Row(LayoutExpandedWidth) {
Text(
- text = "Some title",
- style = TextStyle(Color.Black, 60.px.toSp())
+ "3.5 ★",
+ style = TextStyle(fontSize = 40.px.toSp()),
+ modifier = LayoutGravity.Center
)
- Row(LayoutExpandedWidth) {
- Text(
- "3.5 ★",
- style = TextStyle(fontSize = 40.px.toSp()),
- modifier = LayoutGravity.Center
- )
- ColoredRect(
- width = 40.px.toDp(),
- height = 40.px.toDp(),
- color = playStoreColor,
- modifier = LayoutGravity.Center
- )
- }
+ ColoredRect(
+ width = 40.px.toDp(),
+ height = 40.px.toDp(),
+ color = playStoreColor,
+ modifier = LayoutGravity.Center
+ )
}
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
index fd63c00..26a32b1 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
@@ -33,9 +33,11 @@
import androidx.ui.graphics.Canvas
import androidx.ui.graphics.Color
import androidx.ui.graphics.Paint
+import androidx.ui.layout.Column
import androidx.ui.layout.Container
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutExpanded
+import androidx.ui.layout.LayoutHeight
+import androidx.ui.layout.Row
import kotlin.random.Random
class CrossfadeActivity : Activity() {
@@ -49,29 +51,23 @@
@Composable
private fun CrossfadeDemo() {
var current by +state { tabs[0] }
- FlexColumn {
- inflexible {
- FlexRow {
- tabs.forEach {
- flexible(flex = 1f) {
- PressReleasedGestureDetector(onRelease = {
- Log.e("Crossfade", "Switch to $it")
- current = it
- }) {
- Container(expanded = true, height = 48.dp) {
- DrawTab(tab = it)
- }
- }
+ Column {
+ Row {
+ tabs.forEach {
+ PressReleasedGestureDetector(onRelease = {
+ Log.e("Crossfade", "Switch to $it")
+ current = it
+ }) {
+ Container(LayoutFlexible(1f) + LayoutHeight(48.dp)) {
+ DrawTab(tab = it)
}
}
}
}
- flexible(1f) {
- Crossfade(current = current) { tab ->
- tab.lastInt = +memo { Random.nextInt() }
- Container(expanded = true) {
- DrawTab(tab = tab)
- }
+ Crossfade(current = current) { tab ->
+ tab.lastInt = +memo { Random.nextInt() }
+ Container(LayoutExpanded) {
+ DrawTab(tab = tab)
}
}
}
diff --git a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
index 3116e4e..d78d3ce 100644
--- a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
+++ b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
@@ -49,14 +49,14 @@
import androidx.ui.layout.Container
import androidx.ui.layout.DpConstraints
import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.Spacer
+import androidx.ui.layout.Wrap
+import androidx.ui.layout.Arrangement
import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.layout.LayoutExpandedWidth
import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.LayoutHeight
-import androidx.ui.layout.MainAxisAlignment
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Wrap
+import androidx.ui.layout.Row
import androidx.ui.text.TextStyle
import androidx.ui.text.style.TextAlign
@@ -69,68 +69,63 @@
val totalExamples = 9
Column {
- FlexRow(
+ Row(
LayoutExpandedWidth + LayoutGravity.Center,
- mainAxisAlignment = MainAxisAlignment.SpaceBetween
+ arrangement = Arrangement.SpaceBetween
) {
- inflexible {
- ClickableTextWithBackground(
- text = "Prev",
- color = Color.Cyan,
- onClick = {
- if (exampleIndex.value == 0) {
- exampleIndex.value = totalExamples
- }
+ [email protected](
+ text = "Prev",
+ color = Color.Cyan,
+ onClick = {
+ if (exampleIndex.value == 0) {
+ exampleIndex.value = totalExamples
+ }
- exampleIndex.value = (exampleIndex.value - 1) % totalExamples
- },
- padding = EdgeInsets(20.dp)
+ exampleIndex.value = (exampleIndex.value - 1) % totalExamples
+ },
+ padding = EdgeInsets(20.dp)
+ )
+
+ Container(
+ modifier = LayoutFlexible(1f),
+ alignment = Alignment.Center,
+ constraints = DpConstraints(maxWidth = 300.dp)
+ ) {
+ val description: String = {
+ when (exampleIndex.value) {
+ 0 -> "Toggle a simple popup"
+ 1 -> "Different content for the popup"
+ 2 -> "Popup's behavior when the parent's size or position " +
+ "changes"
+ 3 -> "Aligning the popup below the parent"
+ 4 -> "Aligning the popup inside a parent"
+ 5 -> "Insert an email in the popup and then click outside to " +
+ "dismiss"
+ 6 -> "[bug] Undesired visual effect caused by" +
+ " having a new size content displayed at the old" +
+ " position, until the new one is calculated"
+ 7 -> "The popup is aligning to its parent when the parent is" +
+ " inside a Scroller"
+ 8 -> "[bug] The popup is not repositioned " +
+ "when the parent is moved by the keyboard"
+ else -> "Demo description here"
+ }
+ }.invoke()
+
+ Text(
+ text = description,
+ style = TextStyle(textAlign = TextAlign.Center)
)
}
- expanded(flex = 1f) {
- Container(
- alignment = Alignment.Center,
- constraints = DpConstraints(maxWidth = 300.dp)
- ) {
- val description: String = {
- when (exampleIndex.value) {
- 0 -> "Toggle a simple popup"
- 1 -> "Different content for the popup"
- 2 -> "Popup's behavior when the parent's size or position " +
- "changes"
- 3 -> "Aligning the popup below the parent"
- 4 -> "Aligning the popup inside a parent"
- 5 -> "Insert an email in the popup and then click outside to " +
- "dismiss"
- 6 -> "[bug] Undesired visual effect caused by" +
- " having a new size content displayed at the old" +
- " position, until the new one is calculated"
- 7 -> "The popup is aligning to its parent when the parent is" +
- " inside a Scroller"
- 8 -> "[bug] The popup is not repositioned " +
- "when the parent is moved by the keyboard"
- else -> "Demo description here"
- }
- }.invoke()
-
- Text(
- text = description,
- style = TextStyle(textAlign = TextAlign.Center)
- )
- }
- }
-
- inflexible {
- ClickableTextWithBackground(
- text = "Next",
- color = Color.Cyan,
- onClick = {
- exampleIndex.value = (exampleIndex.value + 1) % totalExamples
- },
- padding = EdgeInsets(20.dp)
- )
- }
+ [email protected](
+ text = "Next",
+ color = Color.Cyan,
+ onClick = {
+ exampleIndex.value = (exampleIndex.value + 1) % totalExamples
+ },
+ padding = EdgeInsets(20.dp)
+ )
}
when (exampleIndex.value) {
diff --git a/ui/ui-layout/api/0.1.0-dev03.txt b/ui/ui-layout/api/0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/0.1.0-dev03.txt
+++ b/ui/ui-layout/api/0.1.0-dev03.txt
@@ -181,8 +181,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/0.1.0-dev04.txt b/ui/ui-layout/api/0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/0.1.0-dev04.txt
+++ b/ui/ui-layout/api/0.1.0-dev04.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
@@ -181,8 +181,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev03.txt b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
@@ -181,8 +181,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev04.txt b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -146,8 +146,8 @@
public final class FlexKt {
ctor public FlexKt();
method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
- method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
- method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+ method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
}
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
index 11ec997..07e3e20 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
@@ -42,13 +42,11 @@
import androidx.ui.graphics.Color
import androidx.ui.graphics.Paint
import androidx.ui.layout.Align
+import androidx.ui.layout.LayoutAlign
import androidx.ui.layout.AlignmentLineOffset
-import androidx.ui.layout.Center
import androidx.ui.layout.Column
import androidx.ui.layout.ConstrainedBox
import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.LayoutPadding
import androidx.ui.layout.Padding
@@ -110,60 +108,40 @@
}
@Composable
-fun FlexRowUsage() {
- FlexRow {
- expanded(flex = 2f) {
- Center {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- }
- SizedRectangle(color = Color(0xFF0000FF), height = 40.dp)
- }
- inflexible {
- SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
- SizedRectangle(color = Color(0xFF00FF00), width = 50.dp)
- SizedRectangle(color = Color(0xFF0000FF), width = 60.dp)
- }
- expanded(flex = 1f) {
- SizedRectangle(color = Color(0xFF00FF00))
- }
- }
-}
-
-@Composable
-fun FlexColumnUsage() {
- FlexColumn {
- expanded(flex = 2f) {
- Center {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- }
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp)
- }
- inflexible {
- SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
- SizedRectangle(color = Color(0xFF00FF00), height = 50.dp)
- SizedRectangle(color = Color(0xFF0000FF), height = 60.dp)
- }
- expanded(flex = 1f) {
- SizedRectangle(color = Color(0xFF00FF00))
- }
- }
-}
-
-@Composable
fun RowUsage() {
Row {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- SizedRectangle(color = Color(0xFFFF0000), width = 40.dp, height = 80.dp)
- SizedRectangle(color = Color(0xFF00FF00), width = 80.dp, height = 70.dp)
+ SizedRectangle(
+ modifier = LayoutFlexible(2f) + LayoutAlign.Center,
+ color = Color(0xFF0000FF),
+ width = 40.dp,
+ height = 40.dp
+ )
+ SizedRectangle(
+ modifier = LayoutFlexible(2f),
+ color = Color(0xFF0000FF),
+ height = 40.dp
+ )
+ SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
+ SizedRectangle(color = Color(0xFF00FF00), width = 50.dp)
+ SizedRectangle(color = Color(0xFF0000FF), width = 60.dp)
+ SizedRectangle(modifier = LayoutFlexible(1f), color = Color(0xFF00FF00))
}
}
@Composable
fun ColumnUsage() {
Column {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- SizedRectangle(color = Color(0xFFFF0000), width = 40.dp, height = 80.dp)
- SizedRectangle(color = Color(0xFF00FF00), width = 80.dp, height = 70.dp)
+ SizedRectangle(
+ modifier = LayoutFlexible(2f) + LayoutAlign.Center,
+ color = Color(0xFF0000FF),
+ width = 40.dp,
+ height = 40.dp
+ )
+ SizedRectangle(modifier = LayoutFlexible(2f), color = Color(0xFF0000FF), width = 40.dp)
+ SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
+ SizedRectangle(color = Color(0xFF00FF00), height = 50.dp)
+ SizedRectangle(color = Color(0xFF0000FF), height = 60.dp)
+ SizedRectangle(modifier = LayoutFlexible(1f), color = Color(0xFF00FF00))
}
}
diff --git a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
index 232448f..f180ba5 100644
--- a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
+++ b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
@@ -23,54 +23,15 @@
import androidx.ui.core.dp
import androidx.ui.core.ipx
import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
import androidx.ui.layout.Column
import androidx.ui.layout.Container
import androidx.ui.layout.LayoutExpandedHeight
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.Row
import androidx.ui.text.TextStyle
@Sampled
@Composable
-fun SimpleFlexRow() {
- FlexRow {
- expanded(flex = 2f) {
- Center {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- }
- }
- inflexible {
- SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
- }
- expanded(flex = 1f) {
- SizedRectangle(color = Color(0xFF00FF00))
- }
- }
-}
-
-@Sampled
-@Composable
-fun SimpleFlexColumn() {
- FlexColumn {
- expanded(flex = 2f) {
- Center {
- SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
- }
- }
- inflexible {
- SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
- }
- expanded(flex = 1f) {
- SizedRectangle(color = Color(0xFF00FF00))
- }
- }
-}
-
-@Sampled
-@Composable
fun SimpleRow() {
Row {
// The child with no flexibility modifier is inflexible by default, will have the specified
diff --git a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
index f4413f4..6947268 100644
--- a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
+++ b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
@@ -27,15 +27,14 @@
import androidx.ui.layout.Column
import androidx.ui.layout.ConstrainedBox
import androidx.ui.layout.Container
-import androidx.ui.layout.CrossAxisAlignment
import androidx.ui.layout.DpConstraints
import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.MaxIntrinsicHeight
import androidx.ui.layout.MaxIntrinsicWidth
import androidx.ui.layout.MinIntrinsicHeight
import androidx.ui.layout.MinIntrinsicWidth
+import androidx.ui.layout.Row
import androidx.ui.layout.Wrap
/**
@@ -76,14 +75,14 @@
}
}
-/*
+/**
* Builds a layout containing two pieces of text separated by a divider, where the divider
* is sized according to the height of the longest text.
*
- * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
+ * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
* whose minimum intrinsic height will correspond to the height of the largest [Text]. Then
- * [MinIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * minimum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [Text]s and
+ * [MinIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * minimum intrinsic height, which due to [LayoutExpandedHeight] will force the [Text]s and
* the divider to use the same height.
*/
@Sampled
@@ -91,17 +90,19 @@
fun MatchParentDividerForText() {
Wrap {
MinIntrinsicHeight {
- FlexRow(crossAxisAlignment = CrossAxisAlignment.Stretch) {
- expanded(flex = 1f) {
- Text("This is a really short text")
+ Row {
+ Text(
+ text = "This is a really short text",
+ modifier = LayoutFlexible(1f) + LayoutExpandedHeight
+ )
+ Container(width = 1.dp, modifier = LayoutExpandedHeight) {
+ DrawShape(RectangleShape, Color.Black)
}
- inflexible {
- Container(width = 1.dp) { DrawShape(RectangleShape, Color.Black) }
- }
- expanded(flex = 1f) {
- Text("This is a much much much much much much much much much much" +
- " much much much much much much longer text")
- }
+ Text(
+ text = "This is a much much much much much much much much much much" +
+ " much much much much much much longer text",
+ modifier = LayoutFlexible(1f) + LayoutExpandedHeight
+ )
}
}
}
@@ -113,8 +114,8 @@
* Here [MaxIntrinsicWidth] is adding a speculative width measurement pass for the [Column],
* whose maximum intrinsic width will correspond to the preferred width of the largest
* [ConstrainedBox]. Then [MaxIntrinsicWidth] will measure the [Column] with tight width, the same
- * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] modifiers will force
- * the [ConstrainedBox]s to use the same width.
+ * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] modifiers will
+ * force the [Container]s to use the same width.
*/
@Sampled
@Composable
@@ -139,30 +140,31 @@
}
}
-/*
- * Builds a layout containing two [AspectRatio]s separated by a divider, where the divider
- * is sized according to the height of the taller [AspectRatio].
+/**
+ * Builds a layout containing two [LayoutAspectRatio]s separated by a divider, where the divider
+ * is sized according to the height of the taller [LayoutAspectRatio].
*
- * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
- * whose maximum intrinsic height will correspond to the height of the taller [AspectRatio]. Then
- * [MaxIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * maximum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [AspectRatio]s
- * and the divider to use the same height.
+ * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [Row], whose
+ * maximum intrinsic height will correspond to the height of the taller [LayoutAspectRatio]. Then
+ * [MaxIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * maximum intrinsic height, which due to [LayoutExpandedHeight] modifier will force the
+ * [LayoutAspectRatio]s and the divider to use the same height.
*/
@Sampled
@Composable
fun MatchParentDividerForAspectRatio() {
Wrap {
MaxIntrinsicHeight {
- FlexRow(crossAxisAlignment = CrossAxisAlignment.Stretch) {
- expanded(flex = 1f) {
- Container(LayoutAspectRatio(2f)) { DrawShape(RectangleShape, Color.Gray) }
+ Row {
+ val modifier = LayoutExpandedHeight + LayoutFlexible(1f)
+ Container(modifier + LayoutAspectRatio(2f)) {
+ DrawShape(RectangleShape, Color.Gray)
}
- inflexible {
- Container(width = 1.dp) { DrawShape(RectangleShape, Color.Black) }
+ Container(width = 1.dp, modifier = LayoutExpandedHeight) {
+ DrawShape(RectangleShape, Color.Black)
}
- expanded(flex = 1f) {
- Container(LayoutAspectRatio(1f)) { DrawShape(RectangleShape, Color.Blue) }
+ Container(modifier + LayoutAspectRatio(1f)) {
+ DrawShape(RectangleShape, Color.Blue)
}
}
}
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
index 2a566e7..3901da7 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
@@ -29,9 +29,7 @@
import androidx.ui.core.toPx
import androidx.ui.core.withDensity
import androidx.ui.layout.ConstrainedBox
-import androidx.ui.layout.CrossAxisAlignment
import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.MainAxisAlignment
import androidx.compose.Composable
import androidx.ui.core.Alignment
import androidx.ui.core.Constraints
@@ -55,9 +53,8 @@
import androidx.ui.layout.Container
import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutMaxHeight
import androidx.ui.layout.Row
import androidx.ui.layout.LayoutSize
import androidx.ui.layout.Spacer
@@ -220,107 +217,6 @@
}
@Test
- fun testRowFlex_withExpandedChildren() = withDensity(density) {
- val heightDp = 50.dp
- val childrenHeight = 50.dp.toIntPx()
-
- val drawLatch = CountDownLatch(2)
- val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
- val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
- show {
- Container(alignment = Alignment.TopLeft) {
- FlexRow {
- val widthDp = 50.px.toDp()
-
- expanded(flex = 1f) {
- Container(width = widthDp, height = heightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
-
- expanded(flex = 2f) {
- Container(width = widthDp, height = (heightDp * 2)) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
- }
- }
- }
- drawLatch.await(1, TimeUnit.SECONDS)
-
- val root = findAndroidComposeView()
- waitForDraw(root)
-
- assertEquals(
- PxSize((root.width.px / 3).round().toPx(), childrenHeight.toPx()),
- childSize[0]
- )
- assertEquals(
- PxSize((root.width.px * 2 / 3).round().toPx(), (heightDp.toPx() * 2).round().toPx()),
- childSize[1]
- )
- assertEquals(PxPosition(0.px, 0.px), childPosition[0])
- assertEquals(PxPosition((root.width.px / 3).round().toPx(), 0.px), childPosition[1])
- }
-
- @Test
- fun testRowFlex_withFlexibleChildren() = withDensity(density) {
- val childrenWidthDp = 50.dp
- val childrenWidth = childrenWidthDp.toIntPx()
- val childrenHeightDp = 50.dp
- val childrenHeight = childrenHeightDp.toIntPx()
-
- val drawLatch = CountDownLatch(2)
- val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
- val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
- show {
- Container(alignment = Alignment.TopLeft) {
- FlexRow {
- flexible(flex = 1f) {
- Container(width = childrenWidthDp, height = childrenHeightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
-
- flexible(flex = 2f) {
- Container(width = childrenWidthDp, height = (childrenHeightDp * 2)) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
- }
- }
- }
- drawLatch.await(1, TimeUnit.SECONDS)
-
- val root = findAndroidComposeView()
- waitForDraw(root)
-
- assertEquals(PxSize(childrenWidth.toPx(), childrenHeight.toPx()), childSize[0])
- assertEquals(
- PxSize(childrenWidth.toPx(), (childrenHeightDp.toPx() * 2).round().toPx()),
- childSize[1]
- )
- assertEquals(PxPosition(0.px, 0.px), childPosition[0])
- assertEquals(PxPosition(childrenWidth.toPx(), 0.px), childPosition[1])
- }
-
- @Test
fun testColumn() = withDensity(density) {
val sizeDp = 50.dp
val size = sizeDp.toIntPx()
@@ -451,106 +347,6 @@
assertEquals(PxPosition(0.px, childrenHeight.toPx()), childPosition[1])
}
- @Test
- fun testColumnFlex_withExpandedChildren() = withDensity(density) {
- val widthDp = 50.dp
- val childrenWidth = widthDp.toIntPx()
-
- val drawLatch = CountDownLatch(2)
- val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
- val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
- show {
- Container(alignment = Alignment.TopLeft) {
- FlexColumn {
- val heightDp = 50.px.toDp()
-
- expanded(flex = 1f) {
- Container(width = widthDp, height = heightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
-
- expanded(flex = 2f) {
- Container(width = (widthDp * 2), height = heightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
- }
- }
- }
- drawLatch.await(1, TimeUnit.SECONDS)
-
- val root = findAndroidComposeView()
- waitForDraw(root)
-
- assertEquals(
- PxSize(childrenWidth.toPx(), (root.height.px / 3).round().toPx()),
- childSize[0]
- )
- assertEquals(
- PxSize((widthDp.toPx() * 2).round(), (root.height.px * 2 / 3).round()),
- childSize[1]
- )
- assertEquals(PxPosition(0.px, 0.px), childPosition[0])
- assertEquals(PxPosition(0.px, (root.height.px / 3).round().toPx()), childPosition[1])
- }
-
- @Test
- fun testColumnFlex_withFlexibleChildren() = withDensity(density) {
- val childrenWidthDp = 50.dp
- val childrenWidth = childrenWidthDp.toIntPx()
- val childrenHeightDp = 50.dp
- val childrenHeight = childrenHeightDp.toIntPx()
-
- val drawLatch = CountDownLatch(2)
- val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
- val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
- show {
- Container(alignment = Alignment.TopLeft) {
- FlexColumn {
- flexible(flex = 1f) {
- Container(width = childrenWidthDp, height = childrenHeightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
-
- flexible(flex = 2f) {
- Container(width = (childrenWidthDp * 2), height = childrenHeightDp) {
- OnPositioned(onPositioned = { coordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
- drawLatch.countDown()
- })
- }
- }
- }
- }
- }
- drawLatch.await(1, TimeUnit.SECONDS)
-
- val root = findAndroidComposeView()
- waitForDraw(root)
-
- assertEquals(PxSize(childrenWidth.toPx(), childrenHeight.toPx()), childSize[0])
- assertEquals(
- PxSize((childrenWidthDp.toPx() * 2).round(), childrenHeight),
- childSize[1]
- )
- assertEquals(PxPosition(0.px, 0.px), childPosition[0])
- assertEquals(PxPosition(0.px, childrenHeight.toPx()), childPosition[1])
- }
// endregion
// region Cross axis alignment tests in Row
@@ -1246,7 +1042,7 @@
@Test @Ignore("Wrap is not supported when there are flexible children. " +
"Should use maxWidth(.Infinity) modifier when it is available")
- fun testFlexRow_withMinMainAxisSize() = withDensity(density) {
+ fun testRow_withMinMainAxisSize() = withDensity(density) {
val sizeDp = 50.dp
val size = sizeDp.toIntPx()
val rowWidthDp = 250.dp
@@ -1259,21 +1055,17 @@
Center {
ConstrainedBox(constraints = DpConstraints(minWidth = rowWidthDp)) {
// TODO: add maxWidth(IntPx.Infinity) modifier
- FlexRow {
- expanded(flex = 1f) {
- Container(width = sizeDp, height = sizeDp) {
- OnPositioned(onPositioned = { coordinates ->
- expandedChildSize = coordinates.size
- drawLatch.countDown()
- })
- }
- }
- inflexible {
+ Row {
+ Container(modifier = LayoutFlexible(1f), width = sizeDp, height = sizeDp) {
OnPositioned(onPositioned = { coordinates ->
- rowSize = coordinates.size
+ expandedChildSize = coordinates.size
drawLatch.countDown()
})
}
+ OnPositioned(onPositioned = { coordinates ->
+ rowSize = coordinates.size
+ drawLatch.countDown()
+ })
}
}
}
@@ -1694,7 +1486,7 @@
@Test @Ignore("Wrap is not supported when there are flexible children. " +
"Should use maxHeight(IntPx.Infinity) modifier when it is available")
- fun testFlexColumn_withMinMainAxisSize() = withDensity(density) {
+ fun testColumn_withMinMainAxisSize() = withDensity(density) {
val sizeDp = 50.dp
val size = sizeDp.toIntPx()
val columnHeightDp = 250.dp
@@ -1707,21 +1499,17 @@
Center {
ConstrainedBox(constraints = DpConstraints(minHeight = columnHeightDp)) {
// TODO: add maxHeight(IntPx.Infinity) modifier
- FlexColumn {
- expanded(flex = 1f) {
- Container(width = sizeDp, height = sizeDp) {
- OnPositioned(onPositioned = { coordinates ->
- expandedChildSize = coordinates.size
- drawLatch.countDown()
- })
- }
- }
- inflexible {
+ Column(LayoutMaxHeight(Dp.Infinity)) {
+ Container(LayoutFlexible(1f), width = sizeDp, height = sizeDp) {
OnPositioned(onPositioned = { coordinates ->
- columnSize = coordinates.size
+ expandedChildSize = coordinates.size
drawLatch.countDown()
})
}
+ OnPositioned(onPositioned = { coordinates ->
+ columnSize = coordinates.size
+ drawLatch.countDown()
+ })
}
}
}
@@ -2930,418 +2718,6 @@
)
}
}
-
- @Test
- fun testFlexRow_hasCorrectIntrinsicMeasurements() = withDensity(density) {
- testIntrinsics(@Composable {
- FlexRow {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(mainAxisAlignment = MainAxisAlignment.Start) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(
- mainAxisAlignment = MainAxisAlignment.Center,
- crossAxisAlignment = CrossAxisAlignment.Center
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(
- mainAxisAlignment = MainAxisAlignment.End,
- crossAxisAlignment = CrossAxisAlignment.End
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(
- mainAxisAlignment = MainAxisAlignment.SpaceAround,
- crossAxisAlignment = CrossAxisAlignment.Stretch
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(mainAxisAlignment = MainAxisAlignment.SpaceBetween) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }, @Composable {
- FlexRow(mainAxisAlignment = MainAxisAlignment.SpaceEvenly) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(2f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
- }
- }
- }) { minIntrinsicWidth, minIntrinsicHeight, maxIntrinsicWidth, maxIntrinsicHeight ->
- // Min width.
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicWidth(0.ipx)
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicWidth(10.dp.toIntPx())
- )
- assertEquals(
- 25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicWidth(25.dp.toIntPx())
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicWidth(IntPx.Infinity)
- )
- // Min height.
- assertEquals(40.dp.toIntPx(), minIntrinsicHeight(0.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), minIntrinsicHeight(125.dp.toIntPx()))
- assertEquals(50.dp.toIntPx(), minIntrinsicHeight(370.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), minIntrinsicHeight(IntPx.Infinity))
- // Max width.
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicWidth(0.ipx)
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicWidth(10.dp.toIntPx())
- )
- assertEquals(
- 25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicWidth(25.dp.toIntPx())
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicWidth(IntPx.Infinity)
- )
- // Max height.
- assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(0.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(125.dp.toIntPx()))
- assertEquals(50.dp.toIntPx(), maxIntrinsicHeight(370.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(IntPx.Infinity))
- }
- }
-
- @Test
- fun testFlexColumn_hasCorrectIntrinsicMeasurements() = withDensity(density) {
- testIntrinsics(@Composable {
- FlexColumn {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(mainAxisAlignment = MainAxisAlignment.Start) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(
- mainAxisAlignment = MainAxisAlignment.Center,
- crossAxisAlignment = CrossAxisAlignment.Center
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(
- mainAxisAlignment = MainAxisAlignment.End,
- crossAxisAlignment = CrossAxisAlignment.End
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(
- mainAxisAlignment = MainAxisAlignment.SpaceAround,
- crossAxisAlignment = CrossAxisAlignment.Stretch
- ) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(mainAxisAlignment = MainAxisAlignment.SpaceBetween) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }, @Composable {
- FlexColumn(mainAxisAlignment = MainAxisAlignment.SpaceEvenly) {
- expanded(flex = 3f) {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- expanded(flex = 2f) {
- ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
- }
- expanded(flex = 2f) {
- Container(LayoutAspectRatio(0.5f)) { }
- }
- inflexible {
- ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
- }
- }
- }) { minIntrinsicWidth, minIntrinsicHeight, maxIntrinsicWidth, maxIntrinsicHeight ->
- // Min width.
- assertEquals(40.dp.toIntPx(), minIntrinsicWidth(0.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), minIntrinsicWidth(125.dp.toIntPx()))
- assertEquals(50.dp.toIntPx(), minIntrinsicWidth(370.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), minIntrinsicWidth(IntPx.Infinity))
- // Min height.
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicHeight(0.ipx)
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicHeight(10.dp.toIntPx())
- )
- assertEquals(
- 25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicHeight(25.dp.toIntPx())
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- minIntrinsicHeight(IntPx.Infinity)
- )
- // Max width.
- assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(0.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(125.dp.toIntPx()))
- assertEquals(50.dp.toIntPx(), maxIntrinsicWidth(370.dp.toIntPx()))
- assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(IntPx.Infinity))
- // Max height.
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicHeight(0.ipx)
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicHeight(10.dp.toIntPx())
- )
- assertEquals(
- 25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicHeight(25.dp.toIntPx())
- )
- assertEquals(
- 30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
- maxIntrinsicHeight(IntPx.Infinity)
- )
- }
- }
-
- @Test
- fun testFlexRow_alignmentUsingAlignmentKey() = withDensity(density) {
- val TestAlignmentLine = HorizontalAlignmentLine(::min)
- val rowSize = Ref<PxSize>()
- val childPosition = arrayOf<Ref<PxPosition>>(Ref(), Ref(), Ref())
- val layoutLatch = CountDownLatch(4)
- show {
- Wrap {
- FlexRow(crossAxisAlignment = CrossAxisAlignment.AlignmentLine(TestAlignmentLine)) {
- inflexible {
- SaveLayoutInfo(rowSize, Ref(), layoutLatch)
- OnChildPositioned({ coordinates ->
- childPosition[0].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(10.ipx, 30.ipx, mapOf(TestAlignmentLine to 10.ipx))
- }
- OnChildPositioned({ coordinates ->
- childPosition[1].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(10.ipx, 10.ipx, mapOf())
- }
- OnChildPositioned({ coordinates ->
- childPosition[2].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(10.ipx, 30.ipx, mapOf(TestAlignmentLine to 20.ipx))
- }
- }
- }
- }
- }
- assertTrue(layoutLatch.await(1, TimeUnit.SECONDS))
-
- assertEquals(PxSize(30.ipx, 40.ipx), rowSize.value)
- assertEquals(PxPosition(0.ipx, 10.ipx), childPosition[0].value)
- assertEquals(PxPosition(10.ipx, 0.ipx), childPosition[1].value)
- assertEquals(PxPosition(20.ipx, 0.ipx), childPosition[2].value)
- }
-
- @Test
- fun testFlexColumn_alignmentUsingAlignmentKey() = withDensity(density) {
- val TestAlignmentLine = VerticalAlignmentLine(::min)
- val columnSize = Ref<PxSize>()
- val childPosition = arrayOf<Ref<PxPosition>>(Ref(), Ref(), Ref())
- val layoutLatch = CountDownLatch(4)
- show {
- Wrap {
- FlexColumn(
- crossAxisAlignment = CrossAxisAlignment.AlignmentLine(TestAlignmentLine)
- ) {
- inflexible {
- SaveLayoutInfo(columnSize, Ref(), layoutLatch)
- OnChildPositioned({ coordinates ->
- childPosition[0].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(30.ipx, 10.ipx, mapOf(TestAlignmentLine to 10.ipx))
- }
- OnChildPositioned({ coordinates ->
- childPosition[1].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(10.ipx, 10.ipx, mapOf())
- }
- OnChildPositioned({ coordinates ->
- childPosition[2].value = coordinates.localToGlobal(PxPosition.Origin)
- layoutLatch.countDown()
- }) {
- FixedSizeLayout(30.ipx, 10.ipx, mapOf(TestAlignmentLine to 20.ipx))
- }
- }
- }
- }
- }
- assertTrue(layoutLatch.await(1, TimeUnit.SECONDS))
-
- assertEquals(PxSize(40.ipx, 30.ipx), columnSize.value)
- assertEquals(PxPosition(10.ipx, 0.ipx), childPosition[0].value)
- assertEquals(PxPosition(0.ipx, 10.ipx), childPosition[1].value)
- assertEquals(PxPosition(0.ipx, 20.ipx), childPosition[2].value)
- }
// endregion
// region Modifiers specific tests
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
index 77d4155..870f468 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
@@ -92,9 +92,6 @@
* entire width assigned by the parent
* - [flexible] similar to [expanded], but the child can leave unoccupied width.
*
- * Example usage:
- *
- * @sample androidx.ui.layout.samples.SimpleFlexRow
*
* @param mainAxisAlignment The alignment of the layout's children in main axis direction.
* Default is [MainAxisAlignment.Start].
@@ -103,6 +100,11 @@
* @param crossAxisSize The size of the layout in the cross axis dimension.
* Default is [LayoutSize.Wrap].
*/
+@Deprecated(
+ "Use Row layout instead.",
+ ReplaceWith("Row"),
+ DeprecationLevel.WARNING
+)
@Composable
fun FlexRow(
modifier: Modifier = Modifier.None,
@@ -133,10 +135,6 @@
* to occupy the entire height assigned by the parent
* - [flexible] similar to [expanded], but the child can leave unoccupied height.
*
- * Example usage:
- *
- * @sample androidx.ui.layout.samples.SimpleFlexColumn
- *
* @param mainAxisAlignment The alignment of the layout's children in main axis direction.
* Default is [MainAxisAlignment.Start].
* @param crossAxisAlignment The alignment of the layout's children in cross axis direction.
@@ -144,6 +142,11 @@
* @param crossAxisSize The size of the layout in the cross axis dimension.
* Default is [LayoutSize.Wrap].
*/
+@Deprecated(
+ "Use Column layout instead.",
+ ReplaceWith("Column"),
+ DeprecationLevel.WARNING
+)
@Composable
fun FlexColumn(
modifier: Modifier = Modifier.None,
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
index 28a9008..b514735 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
@@ -29,7 +29,7 @@
import androidx.ui.core.max
/**
- * A composable that places its children in a horizontal flow. Unlike [Row] or [FlexRow], if the
+ * A composable that places its children in a horizontal flow. Unlike [Row], if the
* horizontal space is too small to put all the children in one row, multiple rows may be used.
*
* Note that just like [Row], flex values cannot be used with [FlowRow].
@@ -68,7 +68,7 @@
}
/**
- * A composable that places its children in a vertical flow. Unlike [Column] or [FlexColumn], if the
+ * A composable that places its children in a vertical flow. Unlike [Column], if the
* vertical space is too small to put all the children in one column, multiple columns may be used.
*
* Note that just like [Column], flex values cannot be used with [FlowColumn].
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
index bcdcc16..a97a221 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
@@ -78,10 +78,10 @@
* The sample builds a layout containing two pieces of text separated by a divider, where the
* divider is sized according to the height of the longest text.
*
- * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
+ * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
* whose minimum intrinsic height will correspond to the height of the largest [Text]. Then
- * [MinIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * minimum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [Text]s and
+ * [MinIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * minimum intrinsic height, which due to [LayoutExpandedHeight] will force the [Text]s and
* the divider to use the same height.
*/
@Composable
@@ -125,8 +125,8 @@
* Here [MaxIntrinsicWidth] is adding a speculative width measurement pass for the [Column],
* whose maximum intrinsic width will correspond to the preferred width of the largest
* [ConstrainedBox]. Then [MaxIntrinsicWidth] will measure the [Column] with tight width, the same
- * as the premeasured maximum intrinsic width, which due to [CrossAxisAlignment.Stretch] will force
- * the [ConstrainedBox]s to use the same width.
+ * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] will force
+ * the [Container]s to use the same width.
* The sample is a layout containing three composables having the same width as the widest one.
*/
@Composable
@@ -168,10 +168,10 @@
* The sample builds a layout containing two [LayoutAspectRatio]s separated by a divider, where the
* divider is sized according to the height of the taller [LayoutAspectRatio].
*
- * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
- * whose maximum intrinsic height will correspond to the height of the taller [LayoutAspectRatio]. Then
- * [MaxIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * maximum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [LayoutAspectRatio]s
+ * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
+ * whose maximum intrinsic height will correspond to the height of the taller [AspectRatio]. Then
+ * [MaxIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * maximum intrinsic height, which due to [LayoutExpandedHeight] will force the [AspectRatio]s
* and the divider to use the same height.
*/
@Composable
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
index 0ccf58b..af36a37 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
@@ -26,8 +26,6 @@
import androidx.ui.layout.Arrangement
import androidx.ui.layout.Column
import androidx.ui.layout.Container
-import androidx.ui.layout.LayoutExpandedHeight
-import androidx.ui.layout.FlexColumn
import androidx.ui.material.MaterialTheme
import androidx.ui.material.RadioGroup
import androidx.ui.material.demos.AppBarActivity.BottomAppBarOption.CenterFab
@@ -76,64 +74,58 @@
var selectedTopAppBar by +state { Simple }
var selectedBottomAppBar by +state { NoFab }
- FlexColumn {
- inflexible {
- Container(height = 120.dp, alignment = Alignment.TopCenter) {
- when (selectedTopAppBar) {
- Simple -> SimpleTopAppBarNavIcon(navigationImage)
- Actions -> SimpleTopAppBarNavIconWithActions(
- favouriteImage,
- navigationImage
+ Column {
+ Container(height = 120.dp, alignment = Alignment.TopCenter) {
+ when (selectedTopAppBar) {
+ Simple -> SimpleTopAppBarNavIcon(navigationImage)
+ Actions -> SimpleTopAppBarNavIconWithActions(
+ favouriteImage,
+ navigationImage
+ )
+ }
+ }
+ Column(LayoutFlexible(1f), arrangement = Arrangement.SpaceBetween) {
+ DemoText("TopAppBar options")
+ RadioGroup {
+ topAppBarOptions.forEach { topAppBar ->
+ RadioGroupTextItem(
+ selected = (topAppBar == selectedTopAppBar),
+ onSelect = { selectedTopAppBar = topAppBar },
+ text = topAppBar.description
+ )
+ }
+ }
+ DemoText("BottomAppBar options")
+ RadioGroup {
+ bottomAppBarOptions.forEach { bottomAppBar ->
+ RadioGroupTextItem(
+ selected = (bottomAppBar == selectedBottomAppBar),
+ onSelect = { selectedBottomAppBar = bottomAppBar },
+ text = bottomAppBar.description
)
}
}
}
- flexible(1f) {
- Column(LayoutExpandedHeight, arrangement = Arrangement.SpaceBetween) {
- DemoText("TopAppBar options")
- RadioGroup {
- topAppBarOptions.forEach { topAppBar ->
- RadioGroupTextItem(
- selected = (topAppBar == selectedTopAppBar),
- onSelect = { selectedTopAppBar = topAppBar },
- text = topAppBar.description
- )
- }
- }
- DemoText("BottomAppBar options")
- RadioGroup {
- bottomAppBarOptions.forEach { bottomAppBar ->
- RadioGroupTextItem(
- selected = (bottomAppBar == selectedBottomAppBar),
- onSelect = { selectedBottomAppBar = bottomAppBar },
- text = bottomAppBar.description
- )
- }
- }
- }
- }
- inflexible {
- Container(height = 120.dp, alignment = Alignment.BottomCenter) {
- when (selectedBottomAppBar) {
- NoFab -> SimpleBottomAppBarNoFab(favouriteImage, navigationImage)
- CenterFab -> SimpleBottomAppBarCenterFab(
- favouriteImage,
- navigationImage
- )
- EndFab -> SimpleBottomAppBarEndFab(favouriteImage)
- CutoutFab -> SimpleBottomAppBarCutoutFab(
- favouriteImage,
- navigationImage
- )
- ExtendedCutoutFab -> SimpleBottomAppBarExtendedCutoutFab(
- favouriteImage,
- navigationImage
- )
- FancyAnimatingCutoutFab -> SimpleBottomAppBarFancyAnimatingCutoutFab(
- favouriteImage,
- navigationImage
- )
- }
+ Container(height = 120.dp, alignment = Alignment.BottomCenter) {
+ when (selectedBottomAppBar) {
+ NoFab -> SimpleBottomAppBarNoFab(favouriteImage, navigationImage)
+ CenterFab -> SimpleBottomAppBarCenterFab(
+ favouriteImage,
+ navigationImage
+ )
+ EndFab -> SimpleBottomAppBarEndFab(favouriteImage)
+ CutoutFab -> SimpleBottomAppBarCutoutFab(
+ favouriteImage,
+ navigationImage
+ )
+ ExtendedCutoutFab -> SimpleBottomAppBarExtendedCutoutFab(
+ favouriteImage,
+ navigationImage
+ )
+ FancyAnimatingCutoutFab -> SimpleBottomAppBarFancyAnimatingCutoutFab(
+ favouriteImage,
+ navigationImage
+ )
}
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
index 53ab4b0..0631f5b4 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
@@ -38,7 +38,6 @@
import androidx.ui.layout.Container
import androidx.ui.layout.LayoutExpanded
import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.LayoutHeight
import androidx.ui.layout.Spacer
@@ -92,16 +91,12 @@
@Composable
private fun DynamicThemeApp(scrollFraction: ScrollFraction, palette: ColorPalette) {
MaterialTheme(palette) {
- Stack(LayoutExpanded) {
- FlexColumn(LayoutExpanded) {
- inflexible {
- TopBar()
- }
- expanded(1f) {
- val background = (+MaterialTheme.colors()).background
- Surface(color = background) {
- ScrollingContent(scrollFraction)
- }
+ Stack {
+ Column(LayoutExpanded) {
+ TopBar()
+ val background = (+MaterialTheme.colors()).background
+ Surface(color = background, modifier = LayoutFlexible(1f)) {
+ ScrollingContent(scrollFraction)
}
}
Container(LayoutGravity.BottomCenter) {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
index bf435bd..27fa063 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
@@ -17,8 +17,9 @@
package androidx.ui.material.demos
import androidx.compose.Composable
-import androidx.ui.layout.Center
-import androidx.ui.layout.FlexColumn
+import androidx.ui.layout.Arrangement
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.material.samples.MaterialThemeSample
import androidx.ui.material.samples.ThemeColorSample
import androidx.ui.material.samples.ThemeTextStyleSample
@@ -26,18 +27,10 @@
class MaterialThemeActivity : MaterialDemoActivity() {
@Composable
override fun materialContent() {
- FlexColumn {
- expanded(1f) {
- Center {
- MaterialThemeSample()
- }
- Center {
- ThemeColorSample()
- }
- Center {
- ThemeTextStyleSample()
- }
- }
+ Column(modifier = LayoutExpandedHeight, arrangement = Arrangement.SpaceAround) {
+ MaterialThemeSample()
+ ThemeTextStyleSample()
+ ThemeColorSample()
}
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
index f7e5928..826cb1d 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
@@ -25,8 +25,8 @@
import androidx.ui.graphics.Color
import androidx.ui.layout.Arrangement
import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.MainAxisAlignment
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.Row
import androidx.ui.material.CircularProgressIndicator
import androidx.ui.material.LinearProgressIndicator
@@ -85,26 +85,25 @@
+onActive { state.start() }
+onDispose { state.stop() }
- FlexColumn(mainAxisAlignment = MainAxisAlignment.Center) {
- expanded(flex = 1f) {
- Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
- // Determinate indicators
- LinearProgressIndicator(progress = state.progress)
- CircularProgressIndicator(progress = state.progress)
- }
- Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
- // Fancy colours!
- LinearProgressIndicator(progress = (state.progress), color = state.generateColor())
- CircularProgressIndicator(
- progress = (state.progress),
- color = state.generateColor()
- )
- }
- Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
- // Indeterminate indicators
- LinearProgressIndicator()
- CircularProgressIndicator()
- }
+ Column {
+ val modifier = LayoutFlexible(1f) + LayoutGravity.Center + LayoutExpandedWidth
+ Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+ // Determinate indicators
+ LinearProgressIndicator(progress = state.progress)
+ CircularProgressIndicator(progress = state.progress)
+ }
+ Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+ // Fancy colours!
+ LinearProgressIndicator(progress = (state.progress), color = state.generateColor())
+ CircularProgressIndicator(
+ progress = (state.progress),
+ color = state.generateColor()
+ )
+ }
+ Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+ // Indeterminate indicators
+ LinearProgressIndicator()
+ CircularProgressIndicator()
}
}
}
\ No newline at end of file
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
index fb11264..2aa229a 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
@@ -19,9 +19,8 @@
import androidx.compose.Composable
import androidx.compose.state
import androidx.compose.unaryPlus
+import androidx.ui.core.dp
import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
-import androidx.ui.layout.FlexColumn
import androidx.ui.material.Button
import androidx.ui.material.ContainedButtonStyle
import androidx.ui.material.samples.FancyIndicatorContainerTabs
@@ -33,40 +32,42 @@
import androidx.ui.material.samples.TextAndIconTabs
import androidx.ui.material.samples.TextTabs
import androidx.ui.graphics.imageFromResource
+import androidx.ui.layout.Arrangement
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutExpandedHeight
+import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutHeight
+import androidx.ui.layout.Spacer
class TabActivity : MaterialDemoActivity() {
@Composable
override fun materialContent() {
val favouriteImage = imageFromResource(resources, R.drawable.ic_favorite)
- FlexColumn {
+ Column(modifier = LayoutExpandedHeight, arrangement = Arrangement.SpaceBetween) {
val showingSimple = +state { true }
val buttonText = "Show ${if (showingSimple.value) "custom" else "simple"} tabs"
- expanded(flex = 1f) {
- if (showingSimple.value) {
- TextTabs()
- IconTabs(favouriteImage)
- TextAndIconTabs(favouriteImage)
- ScrollingTextTabs()
- } else {
- FancyTabs()
- FancyIndicatorTabs()
- FancyIndicatorContainerTabs()
- ScrollingFancyIndicatorContainerTabs()
- }
+ if (showingSimple.value) {
+ TextTabs()
+ IconTabs(favouriteImage)
+ TextAndIconTabs(favouriteImage)
+ ScrollingTextTabs()
+ } else {
+ FancyTabs()
+ FancyIndicatorTabs()
+ FancyIndicatorContainerTabs()
+ ScrollingFancyIndicatorContainerTabs()
}
-
- expanded(flex = 1f) {
- Center {
- Button(
- style = ContainedButtonStyle(color = Color.Cyan),
- text = buttonText,
- onClick = {
- showingSimple.value = !showingSimple.value
- })
+ Button(
+ modifier = LayoutGravity.Center,
+ style = ContainedButtonStyle(color = Color.Cyan),
+ text = buttonText,
+ onClick = {
+ showingSimple.value = !showingSimple.value
}
- }
+ )
+ Spacer(LayoutHeight(50.dp))
}
}
}
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
index dded9a9..554d204 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
@@ -16,10 +16,10 @@
package androidx.ui.material.studies
-import androidx.ui.layout.FlexColumn
import androidx.ui.material.surface.Surface
import androidx.compose.Composable
import androidx.compose.unaryPlus
+import androidx.ui.layout.Column
import androidx.ui.material.MaterialTheme
/**
@@ -30,14 +30,10 @@
@Composable
fun Scaffold(appBar: @Composable() () -> Unit, children: @Composable() () -> Unit) {
- FlexColumn {
- inflexible {
- appBar()
- }
- expanded(flex = 1.0f) {
- Surface(color = (+MaterialTheme.colors()).surface) {
- children()
- }
+ Column {
+ appBar()
+ Surface(modifier = LayoutFlexible(1f), color = (+MaterialTheme.colors()).surface) {
+ children()
}
}
}
\ No newline at end of file
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
index f83a4f7..06afe90 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
@@ -28,12 +28,10 @@
import androidx.ui.layout.Arrangement
import androidx.ui.layout.Column
import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.LayoutExpandedWidth
import androidx.ui.layout.LayoutGravity
import androidx.ui.layout.LayoutHeight
import androidx.ui.layout.LayoutPadding
-import androidx.ui.layout.LayoutSize
import androidx.ui.layout.LayoutWidth
import androidx.ui.layout.Row
import androidx.ui.layout.Spacer
@@ -212,21 +210,15 @@
*/
@Composable
fun RallyAccountRow(name: String, number: String, amount: String, color: Color) {
- FlexRow(LayoutPadding(top = 12.dp, bottom = 12.dp)) {
- inflexible {
- AccountIndicator(color = color)
- Spacer(LayoutWidth(8.dp))
- Column {
- Text(text = name, style = (+MaterialTheme.typography()).body1)
- Text(text = "•••••$number", style = (+MaterialTheme.typography()).subtitle1)
- }
+ Row(LayoutPadding(top = 12.dp, bottom = 12.dp)) {
+ AccountIndicator(color = color)
+ Spacer(LayoutWidth(8.dp))
+ Column {
+ Text(text = name, style = (+MaterialTheme.typography()).body1)
+ Text(text = "•••••$number", style = (+MaterialTheme.typography()).subtitle1)
}
- expanded(flex = 1.0f) {
- Spacer(LayoutSize(width = 0.dp, height = 0.dp))
- }
- inflexible {
- Text(text = "$ $amount", style = (+MaterialTheme.typography()).h6)
- }
+ Spacer(LayoutFlexible(1f))
+ Text(text = "$ $amount", style = (+MaterialTheme.typography()).h6)
}
}
diff --git a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
index ef95fd8..0ddd417 100644
--- a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
+++ b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
@@ -37,11 +37,9 @@
import androidx.ui.foundation.shape.border.DrawBorder
import androidx.ui.foundation.shape.corner.RoundedCornerShape
import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
import androidx.ui.layout.Column
import androidx.ui.layout.Container
import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexColumn
import androidx.ui.layout.Padding
import androidx.ui.material.Tab
import androidx.ui.material.TabRow
@@ -55,20 +53,15 @@
fun TextTabs() {
val state = +state { 0 }
val titles = listOf("TAB 1", "TAB 2", "TAB 3 WITH LOTS OF TEXT")
- FlexColumn {
- inflexible {
- TabRow(items = titles, selectedIndex = state.value) { index, text ->
- Tab(text = text, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(items = titles, selectedIndex = state.value) { index, text ->
+ Tab(text = text, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Text tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Text tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -76,20 +69,15 @@
fun IconTabs(image: Image) {
val state = +state { 0 }
val icons = listOf(image, image, image)
- FlexColumn {
- inflexible {
- TabRow(items = icons, selectedIndex = state.value) { index, icon ->
- Tab(icon = icon, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(items = icons, selectedIndex = state.value) { index, icon ->
+ Tab(icon = icon, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Icon tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Icon tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -99,23 +87,18 @@
val state = +state { 0 }
val titlesAndIcons =
listOf("TAB 1" to image, "TAB 2" to image, "TAB 3 WITH LOTS OF TEXT" to image)
- FlexColumn {
- inflexible {
- TabRow(items = titlesAndIcons, selectedIndex = state.value) { index, data ->
- val (title, icon) = data
- Tab(text = title, icon = icon, selected = state.value == index) {
- state.value = index
- }
+ Column {
+ TabRow(items = titlesAndIcons, selectedIndex = state.value) { index, data ->
+ val (title, icon) = data
+ Tab(text = title, icon = icon, selected = state.value == index) {
+ state.value = index
}
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Text and icon tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Text and icon tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -134,20 +117,15 @@
"TAB 9 WITH LOTS OF TEXT",
"TAB 10"
)
- FlexColumn {
- inflexible {
- TabRow(items = titles, selectedIndex = state.value, scrollable = true) { index, text ->
- Tab(text = text, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(items = titles, selectedIndex = state.value, scrollable = true) { index, text ->
+ Tab(text = text, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Scrolling text tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Scrolling text tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -156,24 +134,19 @@
fun FancyTabs() {
val state = +state { 0 }
val titles = listOf("TAB 1", "TAB 2", "TAB 3")
- FlexColumn {
- inflexible {
- TabRow(items = titles, selectedIndex = state.value) { index, title ->
- FancyTab(
- title = title,
- onClick = { state.value = index },
- selected = (index == state.value)
- )
- }
+ Column {
+ TabRow(items = titles, selectedIndex = state.value) { index, title ->
+ FancyTab(
+ title = title,
+ onClick = { state.value = index },
+ selected = (index == state.value)
+ )
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Fancy tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Fancy tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -190,24 +163,19 @@
}
}
- FlexColumn {
- inflexible {
- TabRow(
- items = titles,
- selectedIndex = state.value,
- indicatorContainer = indicatorContainer
- ) { index, text ->
- Tab(text = text, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(
+ items = titles,
+ selectedIndex = state.value,
+ indicatorContainer = indicatorContainer
+ ) { index, text ->
+ Tab(text = text, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Fancy indicator tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Fancy indicator tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -221,24 +189,19 @@
FancyIndicatorContainer(tabPositions = tabPositions, selectedIndex = state.value)
}
- FlexColumn {
- inflexible {
- TabRow(
- items = titles,
- selectedIndex = state.value,
- indicatorContainer = indicatorContainer
- ) { index, text ->
- Tab(text = text, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(
+ items = titles,
+ selectedIndex = state.value,
+ indicatorContainer = indicatorContainer
+ ) { index, text ->
+ Tab(text = text, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Fancy transition tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Fancy transition tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
@@ -261,25 +224,20 @@
FancyIndicatorContainer(tabPositions = tabPositions, selectedIndex = state.value)
}
- FlexColumn {
- inflexible {
- TabRow(
- items = titles,
- selectedIndex = state.value,
- indicatorContainer = indicatorContainer,
- scrollable = true
- ) { index, text ->
- Tab(text = text, selected = state.value == index) { state.value = index }
- }
+ Column {
+ TabRow(
+ items = titles,
+ selectedIndex = state.value,
+ indicatorContainer = indicatorContainer,
+ scrollable = true
+ ) { index, text ->
+ Tab(text = text, selected = state.value == index) { state.value = index }
}
- flexible(flex = 1f) {
- Center {
- Text(
- text = "Scrolling fancy transition tab ${state.value + 1} selected",
- style = (+MaterialTheme.typography()).body1
- )
- }
- }
+ Text(
+ modifier = LayoutGravity.Center,
+ text = "Scrolling fancy transition tab ${state.value + 1} selected",
+ style = (+MaterialTheme.typography()).body1
+ )
}
}
diff --git a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
index 0b66644..8edd034 100644
--- a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
+++ b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
@@ -24,6 +24,7 @@
import androidx.ui.foundation.ColoredRect
import androidx.ui.foundation.isSystemInDarkTheme
import androidx.ui.graphics.Color
+import androidx.ui.layout.LayoutAspectRatio
import androidx.ui.material.FloatingActionButton
import androidx.ui.material.MaterialTheme
import androidx.ui.material.Typography
@@ -57,7 +58,10 @@
MaterialTheme(colors = colors, typography = typography) {
val currentTheme = if ((+MaterialTheme.colors()).isLight) "light" else "dark"
- FloatingActionButton("FAB with text style and color from $currentTheme theme", onClick = {})
+ FloatingActionButton(
+ "FAB with text style and color from $currentTheme theme",
+ onClick = {}
+ )
}
}
@@ -65,7 +69,7 @@
@Composable
fun ThemeColorSample() {
val colors = +MaterialTheme.colors()
- ColoredRect(color = colors.primary)
+ ColoredRect(color = colors.primary, modifier = LayoutAspectRatio(1f))
}
@Sampled
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
index e661377..2144206 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
@@ -44,15 +44,12 @@
import androidx.ui.foundation.shape.RectangleShape
import androidx.ui.foundation.shape.corner.CircleShape
import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
-import androidx.ui.layout.MainAxisAlignment
import androidx.ui.layout.Row
import androidx.ui.layout.Spacer
import androidx.ui.layout.LayoutWidth
import androidx.ui.material.surface.Surface
import androidx.ui.graphics.Color
import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.LayoutSize
import androidx.ui.layout.Wrap
import androidx.ui.material.BottomAppBar.FabConfiguration
import androidx.ui.material.BottomAppBar.FabPosition
@@ -60,9 +57,9 @@
import androidx.ui.graphics.Image
import androidx.ui.graphics.Path
import androidx.ui.graphics.PathOperation
-import androidx.ui.layout.Align
import androidx.ui.layout.AlignmentLineOffset
import androidx.ui.layout.Arrangement
+import androidx.ui.layout.LayoutAlign
import androidx.ui.layout.LayoutExpanded
import androidx.ui.layout.LayoutExpandedHeight
import androidx.ui.layout.Padding
@@ -150,42 +147,34 @@
endContent: @Composable() (() -> Unit)?
) {
BaseAppBar(color, TopAppBarElevation, RectangleShape) {
- FlexRow(
- mainAxisAlignment = MainAxisAlignment.SpaceBetween,
- crossAxisSize = LayoutSize.Expand
- ) {
+ Row(arrangement = Arrangement.SpaceBetween) {
// We only want to reserve space here if we have some start content
if (startContent != null) {
- inflexible {
- Container(
- modifier = LayoutExpandedHeight,
- width = AppBarTitleStartPadding,
- alignment = Alignment.CenterLeft,
- children = startContent
- )
- }
+ Container(
+ modifier = LayoutExpandedHeight,
+ width = AppBarTitleStartPadding,
+ alignment = Alignment.CenterLeft,
+ children = startContent
+ )
}
- expanded(1f) {
- Align(Alignment.BottomLeft) {
- AlignmentLineOffset(
- alignmentLine = LastBaseline,
- after = withDensity(+ambientDensity()) { AppBarTitleBaselineOffset.toDp() }
- ) {
- // TODO: AlignmentLineOffset requires a child, so in case title() is
- // empty we just add an empty wrap here - should be fixed when we move to
- // modifiers.
- Wrap(children = title)
- }
+ // TODO(soboleva): rework this once AlignmentLineOffset is a modifier
+ Container(LayoutFlexible(1f) + LayoutAlign.BottomLeft) {
+ AlignmentLineOffset(
+ alignmentLine = LastBaseline,
+ after = withDensity(+ambientDensity()) { AppBarTitleBaselineOffset.toDp() }
+ ) {
+ // TODO: AlignmentLineOffset requires a child, so in case title() is
+ // empty we just add an empty wrap here - should be fixed when we move to
+ // modifiers.
+ Wrap(children = title)
}
}
if (endContent != null) {
- inflexible {
- Container(
- modifier = LayoutExpandedHeight,
- alignment = Alignment.Center,
- children = endContent
- )
- }
+ Container(
+ modifier = LayoutExpandedHeight,
+ alignment = Alignment.Center,
+ children = endContent
+ )
}
}
}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
index b049f8d..f0342a0 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
@@ -26,6 +26,7 @@
import androidx.ui.core.IntPxSize
import androidx.ui.core.LastBaseline
import androidx.ui.core.Layout
+import androidx.ui.core.Modifier
import androidx.ui.core.Text
import androidx.ui.core.dp
import androidx.ui.core.ipx
@@ -36,11 +37,12 @@
import androidx.ui.graphics.Image
import androidx.ui.layout.ConstrainedBox
import androidx.ui.layout.Container
-import androidx.ui.layout.CrossAxisAlignment
import androidx.ui.layout.DpConstraints
import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutPadding
import androidx.ui.layout.Padding
+import androidx.ui.layout.Row
import androidx.ui.material.ripple.Ripple
import androidx.ui.text.TextStyle
import androidx.ui.text.style.TextOverflow
@@ -195,35 +197,36 @@
) {
val minHeight = if (icon == null) MinHeight else MinHeightWithIcon
ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
- FlexRow(crossAxisAlignment = CrossAxisAlignment.Center) {
- inflexible {
- if (icon != null) {
- Container(
- alignment = Alignment.CenterLeft,
- constraints = DpConstraints(
- minWidth = IconLeftPadding + IconMinPaddedWidth
- ),
- padding = EdgeInsets(
- // TODO(popam): remove left padding for wide icons
- left = IconLeftPadding,
- top = IconVerticalPadding,
- bottom = IconVerticalPadding
- ),
- children = icon
- )
- }
+ Row {
+ if (icon != null) {
+ Container(
+ modifier = LayoutGravity.Center,
+ alignment = Alignment.CenterLeft,
+ constraints = DpConstraints(
+ minWidth = IconLeftPadding + IconMinPaddedWidth
+ ),
+ padding = EdgeInsets(
+ // TODO(popam): remove left padding for wide icons
+ left = IconLeftPadding,
+ top = IconVerticalPadding,
+ bottom = IconVerticalPadding
+ ),
+ children = icon
+ )
}
- expanded(flex = 1f) {
- Padding(left = ContentLeftPadding, right = ContentRightPadding, children = text)
- }
- inflexible {
- if (trailing != null) {
- Container(
- alignment = Alignment.Center,
- padding = EdgeInsets(right = TrailingRightPadding),
- children = trailing
- )
- }
+ Container(
+ modifier = LayoutFlexible(1f) + LayoutGravity.Center +
+ LayoutPadding(left = ContentLeftPadding, right = ContentRightPadding),
+ alignment = Alignment.CenterLeft,
+ children = text
+ )
+ if (trailing != null) {
+ Container(
+ modifier = LayoutGravity.Center,
+ alignment = Alignment.Center,
+ padding = EdgeInsets(right = TrailingRightPadding),
+ children = trailing
+ )
}
}
}
@@ -260,69 +263,69 @@
) {
val minHeight = if (icon == null) MinHeight else MinHeightWithIcon
ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
- FlexRow {
- inflexible {
- if (icon != null) {
- Container(
- alignment = Alignment.TopLeft,
- constraints = DpConstraints(
- // TODO(popam): remove minHeight with cross axis alignment per child
- minHeight = minHeight,
- minWidth = IconLeftPadding + IconMinPaddedWidth
- ),
- padding = EdgeInsets(
- left = IconLeftPadding,
- top = IconVerticalPadding,
- bottom = IconVerticalPadding
- ),
- children = icon
- )
+ Row {
+ val modifier = LayoutFlexible(1f) + LayoutPadding(
+ left = ContentLeftPadding,
+ right = ContentRightPadding
+ )
+
+ if (icon != null) {
+ Container(
+ alignment = Alignment.TopLeft,
+ constraints = DpConstraints(
+ // TODO(popam): remove minHeight with cross axis alignment per child
+ minHeight = minHeight,
+ minWidth = IconLeftPadding + IconMinPaddedWidth
+ ),
+ padding = EdgeInsets(
+ left = IconLeftPadding,
+ top = IconVerticalPadding,
+ bottom = IconVerticalPadding
+ ),
+ children = icon
+ )
+ }
+
+ if (overlineText != null) {
+ BaselinesOffsetColumn(
+ listOf(OverlineBaselineOffset, OverlineToPrimaryBaselineOffset),
+ modifier
+ ) {
+ overlineText()
+ text()
+ }
+ } else {
+ BaselinesOffsetColumn(
+ listOf(
+ if (icon != null) {
+ PrimaryBaselineOffsetWithIcon
+ } else {
+ PrimaryBaselineOffsetNoIcon
+ },
+ if (icon != null) {
+ PrimaryToSecondaryBaselineOffsetWithIcon
+ } else {
+ PrimaryToSecondaryBaselineOffsetNoIcon
+ }
+ ),
+ modifier
+ ) {
+ text()
+ secondaryText!!()
}
}
- expanded(flex = 1f) {
- Padding(left = ContentLeftPadding, right = ContentRightPadding) {
- if (overlineText != null) {
- BaselinesOffsetColumn(
- listOf(OverlineBaselineOffset, OverlineToPrimaryBaselineOffset)
- ) {
- overlineText()
- text()
- }
- } else {
- BaselinesOffsetColumn(
- listOf(
- if (icon != null) {
- PrimaryBaselineOffsetWithIcon
- } else {
- PrimaryBaselineOffsetNoIcon
- },
- if (icon != null) {
- PrimaryToSecondaryBaselineOffsetWithIcon
- } else {
- PrimaryToSecondaryBaselineOffsetNoIcon
- }
- )
- ) {
- text()
- secondaryText!!()
- }
- }
- }
- }
- inflexible {
- if (trailing != null) {
- Padding(right = TrailingRightPadding) {
- // TODO(popam): find way to center and wrap content without minHeight
- ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
- OffsetToBaselineOrCenter(
- if (icon != null) {
- PrimaryBaselineOffsetWithIcon
- } else {
- PrimaryBaselineOffsetNoIcon
- },
- trailing
- )
- }
+ if (trailing != null) {
+ Padding(right = TrailingRightPadding) {
+ // TODO(popam): find way to center and wrap content without minHeight
+ ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
+ OffsetToBaselineOrCenter(
+ if (icon != null) {
+ PrimaryBaselineOffsetWithIcon
+ } else {
+ PrimaryBaselineOffsetNoIcon
+ },
+ trailing
+ )
}
}
}
@@ -357,48 +360,42 @@
trailing: @Composable() (() -> Unit)?
) {
ConstrainedBox(constraints = DpConstraints(minHeight = MinHeight)) {
- FlexRow {
- inflexible {
- if (icon != null) {
- Container(
- alignment = Alignment.CenterLeft,
- constraints = DpConstraints(
- minWidth = IconLeftPadding + IconMinPaddedWidth
- ),
- padding = EdgeInsets(
- left = IconLeftPadding,
- top = IconThreeLineVerticalPadding,
- bottom = IconThreeLineVerticalPadding
- ),
- children = icon
+ Row {
+ if (icon != null) {
+ Container(
+ alignment = Alignment.CenterLeft,
+ constraints = DpConstraints(
+ minWidth = IconLeftPadding + IconMinPaddedWidth
+ ),
+ padding = EdgeInsets(
+ left = IconLeftPadding,
+ top = IconThreeLineVerticalPadding,
+ bottom = IconThreeLineVerticalPadding
+ ),
+ children = icon
+ )
+ }
+ BaselinesOffsetColumn(
+ listOf(
+ ThreeLineBaselineFirstOffset,
+ ThreeLineBaselineSecondOffset,
+ ThreeLineBaselineThirdOffset
+ ),
+ LayoutFlexible(1f) +
+ LayoutPadding(left = ContentLeftPadding, right = ContentRightPadding)
+ ) {
+ if (overlineText != null) overlineText()
+ text()
+ secondaryText()
+ }
+ if (trailing != null) {
+ Padding(top = ThreeLineTrailingTopPadding, right = TrailingRightPadding) {
+ OffsetToBaselineOrCenter(
+ ThreeLineBaselineFirstOffset - ThreeLineTrailingTopPadding,
+ trailing
)
}
}
- expanded(flex = 1f) {
- Padding(left = ContentLeftPadding, right = ContentRightPadding) {
- BaselinesOffsetColumn(
- listOf(
- ThreeLineBaselineFirstOffset,
- ThreeLineBaselineSecondOffset,
- ThreeLineBaselineThirdOffset
- )
- ) {
- if (overlineText != null) overlineText()
- text()
- secondaryText()
- }
- }
- }
- inflexible {
- if (trailing != null) {
- Padding(top = ThreeLineTrailingTopPadding, right = TrailingRightPadding) {
- OffsetToBaselineOrCenter(
- ThreeLineBaselineFirstOffset - ThreeLineTrailingTopPadding,
- trailing
- )
- }
- }
- }
}
}
}
@@ -411,8 +408,12 @@
*/
// TODO(popam): consider making this a layout composable in ui-layout.
@Composable
-private fun BaselinesOffsetColumn(offsets: List<Dp>, children: @Composable() () -> Unit) {
- Layout(children) { measurables, constraints ->
+private fun BaselinesOffsetColumn(
+ offsets: List<Dp>,
+ modifier: Modifier = Modifier.None,
+ children: @Composable() () -> Unit
+) {
+ Layout(children, modifier) { measurables, constraints ->
val childConstraints = constraints.copy(minHeight = 0.ipx, maxHeight = IntPx.Infinity)
val placeables = measurables.map { it.measure(childConstraints) }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
index 5d8d32b..4e91af0 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
@@ -37,7 +37,6 @@
import androidx.ui.core.Text
import androidx.ui.core.WithConstraints
import androidx.ui.core.ambientDensity
-import androidx.ui.core.coerceIn
import androidx.ui.core.dp
import androidx.ui.core.max
import androidx.ui.core.sp
@@ -52,10 +51,11 @@
import androidx.ui.graphics.Color
import androidx.ui.graphics.Image
import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
import androidx.ui.layout.LayoutExpandedWidth
import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutHeight
import androidx.ui.layout.Padding
+import androidx.ui.layout.Row
import androidx.ui.layout.Stack
import androidx.ui.material.TabRow.IndicatorTransition
import androidx.ui.material.TabRow.TabPosition
@@ -134,18 +134,24 @@
tab: @Composable() (Int, T) -> Unit
) {
Surface(color = (+MaterialTheme.colors()).primary) {
- val tabs = @Composable {
- items.forEachIndexed { index, item ->
- tab(index, item)
- }
- }
-
WithConstraints { constraints ->
val width = constraints.maxWidth
// TODO: force scrollable for tabs that will be too small if they take up equal space?
if (scrollable) {
+ val tabs = @Composable {
+ items.forEachIndexed { index, item ->
+ tab(index, item)
+ }
+ }
ScrollableTabRow(width, selectedIndex, tabs, indicatorContainer)
} else {
+ val tabs = @Composable { modifier: Modifier ->
+ items.forEachIndexed { index, item ->
+ Container(modifier) {
+ tab(index, item)
+ }
+ }
+ }
FixedTabRow(width, items.size, tabs, indicatorContainer)
}
}
@@ -156,7 +162,7 @@
private fun FixedTabRow(
width: IntPx,
tabCount: Int,
- tabs: @Composable() () -> Unit,
+ tabs: @Composable() (Modifier) -> Unit,
indicatorContainer: @Composable() (tabPositions: List<TabPosition>) -> Unit
) {
val tabWidth = width / tabCount
@@ -173,8 +179,8 @@
}
Stack(LayoutExpandedWidth) {
- FlexRow(LayoutGravity.Center) {
- expanded(1f, tabs)
+ Row(LayoutGravity.Center) {
+ tabs(LayoutFlexible(1f))
}
divider(LayoutGravity.BottomCenter)
Container(LayoutGravity.Stretch) {
@@ -459,7 +465,7 @@
@Composable
private fun TextTab(text: String, selected: Boolean, onSelected: () -> Unit, tint: Color) {
BaseTab(selected = selected, onSelected = onSelected) {
- Container(height = SmallTabHeight) {
+ Container(LayoutExpandedWidth + LayoutHeight(SmallTabHeight)) {
TabTransition(color = tint, selected = selected) { tabTintColor ->
TabTextBaselineLayout {
TabText(text, tabTintColor)
@@ -480,7 +486,7 @@
@Composable
private fun IconTab(icon: Image, selected: Boolean, onSelected: () -> Unit, tint: Color) {
BaseTab(selected = selected, onSelected = onSelected) {
- Container(height = SmallTabHeight) {
+ Container(LayoutExpandedWidth + LayoutHeight(SmallTabHeight)) {
TabTransition(color = tint, selected = selected) { tabTintColor ->
TabIcon(icon, tabTintColor)
}
@@ -507,7 +513,7 @@
tint: Color
) {
BaseTab(selected = selected, onSelected = onSelected) {
- Container(height = LargeTabHeight) {
+ Container(LayoutExpandedWidth + LayoutHeight(LargeTabHeight)) {
TabTransition(color = tint, selected = selected) { tabTintColor ->
TabTextBaselineLayout(
icon = { TabIcon(icon, tabTintColor) },
diff --git a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
index 960d679..1b0f910 100644
--- a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
+++ b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
@@ -33,8 +33,8 @@
import androidx.ui.foundation.shape.RectangleShape
import androidx.ui.graphics.Color
import androidx.ui.layout.Column
-import androidx.ui.layout.FlexRow
-import androidx.ui.layout.Padding
+import androidx.ui.layout.LayoutPadding
+import androidx.ui.layout.Row
import androidx.ui.text.AnnotatedString
import androidx.ui.text.SpanStyle
import androidx.ui.text.TextStyle
@@ -82,17 +82,15 @@
selection = selection.value,
onSelectionChange = { selection.value = it }
) {
- Padding(12.dp) {
- Column {
- Basics()
- AddTextElement()
- langContent.forEach {
- MultiLanguage(it[0], it[1])
- }
- Basics()
- MultiParagraph()
- AddTextElement()
+ Column(LayoutPadding(12.dp)) {
+ Basics()
+ AddTextElement()
+ langContent.forEach {
+ MultiLanguage(it[0], it[1])
}
+ Basics()
+ MultiParagraph()
+ AddTextElement()
}
}
}
@@ -104,20 +102,20 @@
text = "Jetpack Compose Basics",
style = commonStyle.merge(header)
)
- FlexRow {
- inflexible {
- Padding(8.dp) {
- SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
- }
- }
- flexible(1f) {
- Text(
- text = "Jetpack Compose is a modern toolkit for building native Android UI." +
- " Jetpack Compose simplifies and accelerates UI development on Android " +
- "with less code, powerful tools, and intuitive Kotlin APIs.",
- style = commonStyle
- )
- }
+ Row {
+ SizedRectangle(
+ modifier = LayoutPadding(8.dp),
+ color = rectColor,
+ width = 48.dp,
+ height = 48.dp
+ )
+ Text(
+ text = "Jetpack Compose is a modern toolkit for building native Android UI." +
+ " Jetpack Compose simplifies and accelerates UI development on Android " +
+ "with less code, powerful tools, and intuitive Kotlin APIs.",
+ modifier = LayoutFlexible(1f),
+ style = commonStyle
+ )
}
}
@@ -127,30 +125,29 @@
text = "Add a text element",
style = commonStyle.merge(header2)
)
- FlexRow {
- flexible(1f) {
- Column {
- Text(
- text = AnnotatedString {
- append("To begin, follow the")
- withStyle(link) {
- append(" Jetpack Compose setup instructions ")
- }
- append(
- ", and create an app using the Empty Compose Activity template. Then " +
- "add a text element to your blank activity. You do this by " +
- "defining a content block, and calling the Text() function."
- )
- },
- style = commonStyle
- )
- }
+ Row {
+ Column(modifier = LayoutFlexible(1f)) {
+ Text(
+ text = AnnotatedString {
+ append("To begin, follow the")
+ withStyle(link) {
+ append(" Jetpack Compose setup instructions ")
+ }
+ append(
+ ", and create an app using the Empty Compose Activity template. Then " +
+ "add a text element to your blank activity. You do this by " +
+ "defining a content block, and calling the Text() function."
+ )
+ },
+ style = commonStyle
+ )
}
- inflexible {
- Padding(8.dp) {
- SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
- }
- }
+ SizedRectangle(
+ modifier = LayoutPadding(8.dp),
+ color = rectColor,
+ width = 48.dp,
+ height = 48.dp
+ )
}
EmptyRect()
Text(
@@ -215,26 +212,29 @@
text = title,
style = commonStyle.merge(header)
)
- FlexRow {
- inflexible {
- Padding(8.dp) {
- SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
- }
- }
- flexible(1f) {
- Text(
- text = content,
- style = commonStyle
- )
- }
+ Row {
+ SizedRectangle(
+ modifier = LayoutPadding(8.dp),
+ color = rectColor,
+ width = 48.dp,
+ height = 48.dp
+ )
+ Text(
+ text = content,
+ modifier = LayoutFlexible(1f),
+ style = commonStyle
+ )
}
}
@Composable
fun EmptyRect() {
- Padding(top = 20.dp, bottom = 20.dp) {
- SizedRectangle(color = rectColor, width = 200.dp, height = 60.dp)
- }
+ SizedRectangle(
+ modifier = LayoutPadding(top = 20.dp, bottom = 20.dp),
+ color = rectColor,
+ width = 200.dp,
+ height = 60.dp
+ )
}
@Composable