Jak nastavit šířku zásuvky v jetpack skládat>

0

Otázka

Můžu mít Navigační Zásuvku v JetpackCompose pomocí Lešení.

Ale když jsem se změnit velikost drawbleShape, nastavit pevnou šířku jako výchozí velikosti.

Scaffold(
    drawerContent = { DrawableCompose() },
    drawableShape = MaterialTheme.shapes.small
) {}

Jsem odkaz na tento post, Jak nastavit Lešení Zásuvky Šířka v JetpackCompose?

Ale to řezat dítě skládat jako,

Scaffold(
    drawerContent = { DrawableCompose() },
    drawableShape = customShape()
) {}

@Composable
fun customShape() = object : Shape {
    override fun createOutline(
        size: Size,
        layoutDirection: LayoutDirection,
        density: Density
    ): Outline {
        return Outline.Rectangle(Rect(left = 0f, top = 0f, right = size.width * 2 / 3, bottom = size.height))
    }

DrawerCompose

@Composable
fun DrawerCompose(
    id: String
) {
    val focusManager = LocalFocusManager.current
    val keyboardController = LocalSoftwareKeyboardController.current

    Column(modifier = Modifier.fillMaxSize()) {
        OutlinedTextField(value = id, onValueChange = { onChangeEmpNo(it) }, modifier = Modifier.fillMaxWidth())
    }
}

enter image description here

Jak je znázorněno na obrázku výše, některé části jsou odříznuty. Existuje nějaký způsob, jak nastavit šířku zásuvky skládat šířka?

android-jetpack-compose drawer
2021-11-24 04:09:16
1

Nejlepší odpověď

0

Měli byste být schopni to vyřešit přidáním Rozpěry, něco jako:

Scaffold(
    drawerContent = {
        Row {
            DrawableCompose()
            Spacer(Modifier.fillMaxHeight().width(48.dp))
        }
    },
    drawerShape = customShape()
) {}

Pokud chcete však používat správně, můžete použít toto:

val myShape = customShape()
val widthDp = pxToDp(myShape.leftSpaceWidth!!)
Scaffold(
    drawerContent = {
        Row {
            DrawableCompose()
            Spacer(Modifier.fillMaxHeight().width(widthDp))
        }
    },
    drawerShape = myShape
) {}

Pro výše uvedené řešení, budete muset přidat pxToDp funkce a nastavení customShape funkce:

@Composable
fun pxToDp(px: Float) = with(LocalDensity.current) { px.toDp() }

@Composable
fun customShape() = MyShape()

class MyShape : Shape {
    var leftSpaceWidth: Float? = null
    override fun createOutline(
        size: Size,
        layoutDirection: LayoutDirection,
        density: Density
    ): Outline {
        leftSpaceWidth = size.width * 1 / 3
        return Outline.Rectangle(Rect(left = 0f, top = 0f, right = size.width * 2 / 3, bottom = size.height))
    }
}
2021-11-26 14:20:31

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................