Giter Site home page Giter Site logo

skydoves / orchestra Goto Github PK

View Code? Open in Web Editor NEW
456.0 7.0 22.0 357 KB

๐ŸŽบ A collection of Jetpack Compose libraries, which allows you to build tooltips, spinners, and color pickers.

License: Apache License 2.0

Kotlin 100.00%
android kotlin jetpack-compose balloon colorpicker spinner skydoves compose

orchestra's Introduction

Google Developer Expert Google Developers Medium Speaker
Sponsors Twitter Mastodon YouTube

GitHub Status

orchestra's People

Contributors

ao0000 avatar skydoves avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

orchestra's Issues

Show tooltip without clicking the anchor

Is your feature request related to a problem?

I am trying to display a tooltip when the anchor is displayed, is there a way to do this without a click event?

Describe the solution you'd like:

Please display the tooltip without requiring a click event.

How should I use ComposeView to setLayout in Balloon?

  • Library Version com.github.skydoves:orchestra-balloon:1.1.1

  • Affected Device(s) Android 10

Describe the Bug:

I try to write like this

BalloonAnchor(
            reference = row,
            balloon = Balloon.Builder(LocalContext.current).apply {
                setLayout(ComposeView(LocalContext.current).apply {
                    setContent {
                        // In Compose world
                        MaterialTheme {
                            Text("Hello Compose!")
                        }
                    }
                })
            }.build(),
            onAnchorClick = { balloon, anchor ->
                balloon.showAsDropDown(anchor)
            }
        )

it crashed

  java.lang.IllegalStateException: Cannot locate windowRecomposer; View androidx.compose.ui.platform.ComposeView{8b981b1 V.E...... ......I. 0,0-0,0} is not attached to a window
        at androidx.compose.ui.platform.WindowRecomposer_androidKt.getWindowRecomposer(WindowRecomposer.android.kt:225)
        at androidx.compose.ui.platform.AbstractComposeView.resolveParentCompositionContext(ComposeView.android.kt:244)
        at androidx.compose.ui.platform.AbstractComposeView.ensureCompositionCreated(ComposeView.android.kt:251)
        at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt:288)
        at android.view.View.measure(View.java:25477)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6981)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:25477)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6981)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:25477)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6981)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:25477)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6981)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:25477)
        at com.skydoves.balloon.Balloon$showAsDropDown$$inlined$show$1.run(Balloon.kt:747)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:217)
        at android.app.ActivityThread.main(ActivityThread.java:8002)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:502)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)

spinnerBackgroundColor not switching when toggling dark / light theme

Please complete the following information:

  • Library Version v1.1.0
  • Affected Device(s) Pixel 5

Describe the Bug:

The value passed to spinnerBackgroundColor is remembered, so the color does not change even when the theme is toggled from/to dark/light.

val spinnerView = remember {
createPowerSpinnerView(context) {
setShowArrow(false)
setShowDivider(showDivider)
setDividerColor(dividerColor.toArgb())
setDividerSize(context.dp2Px(dividerSize))
setLifecycleOwner(lifecycleOwner)
setSpinnerPopupAnimation(spinnerAnimation)
setSpinnerPopupBackgroundColor(spinnerBackgroundColor.toArgb())
setDismissWhenNotifiedItemSelected(dismissWhenNotifiedItemSelected)
setOnSpinnerOutsideTouchListener { view, motionEvent ->
onSpinnerOutsideTouched(view, motionEvent)
}
}

Expected Behavior:

Since the color value passed to color switches when toggling the app theme, I suppose the background color of spinner should also switch based on which theme is currently applied.

android.view.InflateException

Please complete the following information:

  • Library Version 1.1.1
  • Affected Device Xiaomi Mi 11 (Android 12)

Found a crash on crashlytics. The exception here:

Fatal Exception: android.view.InflateException: Binary XML file line #65 in com.steleot.jetpackcompose.playground:layout/layout_balloon_library_skydoves: Binary XML file line #65 in com.steleot.jetpackcompose.playground:layout/layout_balloon_library_skydoves: Error inflating class androidx.appcompat.widget.AppCompatImageView
...
Caused by android.content.res.Resources$NotFoundException: Drawable (missing name) with resource ID #0x7f080059
...

Expected Behavior:

Not to crash on Android 12 on Device

Please still support jvmTarget 1.8 in order to support projects with Jacoco

  • Library Version - 1.1.1
  • Affecting all builds

Bug Description:

So our project uses Jacoco version 0.8.7 and in order to not have the build error mentioned here: https://issuetracker.google.com/issues/178400721 we have to keep the following at Java 8, although our home JDK is set to 11 to support Compose and the AGP 7.0.3

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

The issue is that this library if you use the createBalloon Kotlin DSL method then we get this build error:

Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option

But we can't upgrade the JVM target or we run into the build issue with Jacoco.
In the meantime I expect we'll just use the Java supported Balloon.Builder but would be nice to use the Kotlin DSL.

Expected Behavior:

The ability to use the createBalloon DSL without having to upgrade the JVM target.

BalloonAnchor onAnchorClick onLongClick

Is your feature request related to a problem?

I would like to only show the balloon once the reference was on longclick, while it passed the function for the click

Describe the solution you'd like:

using the combineClickable to enable use the onLongClick

modifier = Modifier.combinedClickable(
    onClick = {
        
    },
    onLongClick = {
        
    }
),

Spinner dont work

Please complete the following information:

  • Library Version orchestra-spinner:1.1.3
  • Affected Device Xiaomi Redmi Note 8T Android 12

Describe the Bug:

I'm trying use Spinner in this View:

package ru.wanket.rmp.view

import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
import com.skydoves.orchestra.spinner.Spinner
import ru.wanket.rmp.view_model.BeerViewModel

@Composable
fun BeerView(
    headerText: String,
    colorNames: List<String>,
    viewModel: BeerViewModel
) = Ui(
    headerText,
    colorNames,
    viewModel.selectedBrands
) { _, item -> viewModel.onItemsSelected(item) }

@Composable
private fun Ui(
    headerText: String,
    colorNames: List<String>,
    selectedBrands: List<String>,
    onSpinnerItemSelected: (Int, String) -> Unit
) = ConstraintLayout(
    modifier = Modifier
        .fillMaxHeight()
        .fillMaxWidth()
) {
    val (headerLabel, spinner, resultLabel) = createRefs()

    Text(
        text = headerText,
        modifier = Modifier.constrainAs(headerLabel) {
            centerHorizontallyTo(parent)
            bottom.linkTo(spinner.top, 8.dp)
        }
    )

    Spinner(
        modifier = Modifier.constrainAs(spinner) {
            centerTo(parent)
        },
        itemList = colorNames,
        onSpinnerItemSelected = onSpinnerItemSelected
    )

    Text(
        text = selectedBrands.joinToString(),
        modifier = Modifier.constrainAs(resultLabel) {
            centerHorizontallyTo(parent)
            top.linkTo(spinner.bottom, 8.dp)
        }
    )
}

@Preview
@Composable
fun PreviewUi() = Ui(
    "Header text",
    listOf("Color"),
    listOf("Selected brand")
) { _, _ -> }

but I got runtime error:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ru.wanket.rmp, PID: 7897
    java.lang.NoSuchMethodError: No static method rememberConstraintLayoutMeasurePolicy(ILandroidx/constraintlayout/compose/ConstraintLayoutScope;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; in class Landroidx/constraintlayout/compose/ConstraintLayoutKt; or its super classes (declaration of 'androidx.constraintlayout.compose.ConstraintLayoutKt' appears in /data/app/ru.wanket.rmp-ouLLqshfga8ub_J0R7k4ow==/base.apk)
        at com.skydoves.orchestra.spinner.Spinner__SpinnerComposeKt.Spinner-v3xfejs(SpinnerCompose.kt:264)
        at com.skydoves.orchestra.spinner.Spinner.Spinner-v3xfejs(SpinnerCompose.kt:1)
        at ru.wanket.rmp.view.BeerViewKt$Ui$$inlined$ConstraintLayout$2.invoke(ConstraintLayout.kt:1534)
        at ru.wanket.rmp.view.BeerViewKt$Ui$$inlined$ConstraintLayout$2.invoke(ConstraintLayout.kt:92)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.ui.layout.LayoutKt.MultiMeasureLayout(Layout.kt:562)
        at ru.wanket.rmp.view.BeerViewKt.Ui(BeerView.kt:91)
        at ru.wanket.rmp.view.BeerViewKt.BeerView(BeerView.kt:19)
        at ru.wanket.rmp.activity.BeerActivity$onCreate$1.invoke(BeerActivity.kt:18)
        at ru.wanket.rmp.activity.BeerActivity$onCreate$1.invoke(BeerActivity.kt:17)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:410)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
        at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:166)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:123)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:114)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:157)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:156)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:156)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:140)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at androidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:3337)
E/AndroidRuntime:     at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2582)
        at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2571)
        at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:247)
        at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1)
        at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2571)
        at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:2522)
        at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
        at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:748)
        at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:433)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
        at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:907)
        at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:131)
        at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:182)
        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
        at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:196)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:138)
        at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
        at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:994)
        at android.view.View.dispatchAttachedToWindow(View.java:20105)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3430)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2052)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7768)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
        at android.view.Choreographer.doCallbacks(Choreographer.java:791)
        at android.view.Choreographer.doFrame(Choreographer.java:726)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Using preview in AS show this error:

java.lang.NoSuchMethodError: 'androidx.compose.ui.layout.MeasurePolicy androidx.constraintlayout.compose.ConstraintLayoutKt.rememberConstraintLayoutMeasurePolicy(int, androidx.constraintlayout.compose.ConstraintLayoutScope, androidx.compose.runtime.MutableState, androidx.compose.runtime.Composer, int)'
	at com.skydoves.orchestra.spinner.Spinner__SpinnerComposeKt.Spinner-v3xfejs(SpinnerCompose.kt:264)
	at com.skydoves.orchestra.spinner.Spinner.Spinner-v3xfejs(SpinnerCompose.kt:1)
	at ru.wanket.rmp.view.BeerViewKt$Ui$$inlined$ConstraintLayout$2.invoke(ConstraintLayout.kt:1534)
	at ru.wanket.rmp.view.BeerViewKt$Ui$$inlined$ConstraintLayout$2.invoke(ConstraintLayout.kt:92)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.ui.layout.LayoutKt.MultiMeasureLayout(Layout.kt:562)
	at ru.wanket.rmp.view.BeerViewKt.Ui(BeerView.kt:91)
	at ru.wanket.rmp.view.BeerViewKt.PreviewUi(BeerView.kt:65)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at androidx.compose.ui.tooling.CommonPreviewUtils.invokeComposableMethod(CommonPreviewUtils.kt:150)
	at androidx.compose.ui.tooling.CommonPreviewUtils.invokeComposableViaReflection$ui_tooling_release(CommonPreviewUtils.kt:189)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:593)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:591)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.kt:630)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.kt:586)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
	at androidx.compose.ui.tooling.InspectableKt.Inspectable(Inspectable.kt:61)
	at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:535)
	at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:534)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
	at androidx.compose.ui.tooling.ComposeViewAdapter.WrapPreview(ComposeViewAdapter.kt:530)
	at androidx.compose.ui.tooling.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.kt:121)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:586)
	at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:583)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:410)
	at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
	at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
	at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:166)
	at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:123)
	at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
	at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:114)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:157)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:156)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:156)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:140)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
	at androidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:3337)
	at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2582)
	at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2571)
	at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:247)
	at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source)
	at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2571)
	at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:2522)
	at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
	at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:748)
	at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:433)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
	at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:907)
	at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:131)
	at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:182)
	at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
	at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:196)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:138)
	at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
	at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:994)
	at android.view.View.dispatchAttachedToWindow(View.java:20753)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3490)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
	at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:57)
	at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:368)
	at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:436)
	at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:121)
	at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:736)
	at com.android.tools.idea.rendering.RenderTask.lambda$inflate$7(RenderTask.java:892)
	at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:187)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)

Expected Behavior:

View is works

Show arrow on dropdown

Is your feature request related to a problem?

It's impossible to discern a Dropdown from a normal Button

Describe the solution you'd like:

I'd like to have an arrow pointing downwards on the dropdown, showing that you can display more options.


I believe this is related to code in

As it has a setArrow boolean, which is not present in the list of parameters. If it is really a 'should I display a dropdown arrow' we should add it to the composable funcion

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.