Skip to content

Instantly share code, notes, and snippets.

@pt2121
Created February 2, 2020 04:41
Show Gist options
  • Save pt2121/eb688a41d10726ad8f6833e112b5a0d5 to your computer and use it in GitHub Desktop.
Save pt2121/eb688a41d10726ad8f6833e112b5a0d5 to your computer and use it in GitHub Desktop.
compose 0.1.0-dev04
--------- beginning of crash
02-01 20:35:16.494 21603 21603 E AndroidRuntime: FATAL EXCEPTION: main
02-01 20:35:16.494 21603 21603 E AndroidRuntime: Process: com.pt2121.bottomdrawer, PID: 21603
02-01 20:35:16.494 21603 21603 E AndroidRuntime: java.lang.IllegalArgumentException: LayoutNode@dcd3e1b children: 1 measureBlocks: MeasuringIntrinsicsMeasureBlocks@cccb17f{ measureBlock=androidx.ui.foundation.ScrollerKt$ScrollerLayout$1$2@876754c } shouldn't require remeasure. relayoutNodes consists of the top nodes of the affected subtrees
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at androidx.ui.core.AndroidComposeView.measureAndLayout$ui_platform_release(AndroidOwner.kt:431)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at androidx.ui.core.AndroidComposeView.dispatchDraw(AndroidOwner.kt:584)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.draw(View.java:21424)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20298)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20258)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20258)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20258)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20258)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20258)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewRootImpl.draw(ViewRootImpl.java:3610)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3418)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2755)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:790)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:725)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:883)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7356)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
02-01 20:35:16.494 21603 21603 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
02-01 20:35:16.500 2051 3692 W ActivityTaskManager: Force finishing activity com.pt2121.bottomdrawer/.MainActivity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.compose.state
import androidx.ui.core.Text
import androidx.ui.core.setContent
import androidx.ui.foundation.HorizontalScroller
import androidx.ui.foundation.ScrollerPosition
import androidx.ui.foundation.shape.DrawShape
import androidx.ui.foundation.shape.RectangleShape
import androidx.ui.graphics.Color
import androidx.ui.layout.Column
import androidx.ui.layout.Container
import androidx.ui.layout.Row
import androidx.ui.material.BottomDrawerLayout
import androidx.ui.material.DrawerState
import androidx.ui.material.MaterialTheme
import androidx.ui.unit.dp
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
BottomDrawerSample()
}
}
}
}
@Composable
fun BottomDrawerSample() {
val (state, onStateChange) = state { DrawerState.Closed }
BottomDrawerLayout(
drawerState = state,
onStateChange = onStateChange,
drawerContent = { ControlledHorizontalScrollerSample() },
bodyContent = {
Text("body")
}
)
}
@Composable
fun ControlledHorizontalScrollerSample() {
// Create and own ScrollerPosition to call `smoothScrollTo` later
val position = ScrollerPosition()
val scrollable = state { true }
Column {
HorizontalScroller(
scrollerPosition = position,
isScrollable = scrollable.value
) {
Row {
repeat(1000) { index ->
Square(index)
}
}
}
}
}
@Composable
private fun Square(index: Int) {
Container(width = 75.dp, height = 200.dp) {
DrawShape(RectangleShape, colors[index % colors.size])
Text(index.toString())
}
}
private val colors = listOf(
Color(0xFFffd7d7.toInt()),
Color(0xFFffe9d6.toInt()),
Color(0xFFfffbd0.toInt()),
Color(0xFFe3ffd9.toInt()),
Color(0xFFd0fff8.toInt())
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment