कंपोज़ में, हम स्क्रीन में कंपोज़ेबल की स्थिति या आकार कैसे प्राप्त करते हैं? उदाहरण के लिए, मैं मानचित्र कैमरे को विशिष्ट सीमाओं और पैडिंग जोड़ने के बीच फ़ोकस करने का प्रयास कर रहा हूं। यहां मुझे पेजर शीर्ष स्थिति और टॉपबार नीचे की स्थिति के अनुरूप पैडिंग प्राप्त करने की आवश्यकता है।

enter image description here

वर्तमान में इस स्क्रीन का कोड निम्नलिखित है:

BoxWithConstraints {
        MapViewWithMarkers(...)
        TopAppBar(
            modifier = Modifier
                .fillMaxWidth()
                .statusBarsPadding(),
            backgroundColor = Color.Transparent,
            elevation = 0.dp,
        )
        HorizontalPager(
            state = pagerState,
            modifier = Modifier
                .align(Alignment.BottomCenter)
                .fillMaxWidth()
                .navigationBarsPadding()
                .padding(bottom = 32.dp),
            itemSpacing = 8.dp,
        ) { page ->
            val hikeOnMapCard = hikeMarkerList[page]
            HikeOnMapCard(hikeOnMapCard) {
                viewModel.hikeOnMapCardClicked(hikeOnMapCard.id)
            }
        }
    }

मैं MapViewWithMarkers को इस स्क्रीन पर TopAppBar आकार और पेजर आकार से संबंधित पैडिंग को कंपोज़ेबल करने के लिए अग्रेषित करना चाहता हूं

धन्यवाद !

3
Guimareshh 12 मई 2021, 14:32

1 उत्तर

सबसे बढ़िया उत्तर

कंपोज़ेबल की स्थिति और आकार प्राप्त करने के लिए आप का उपयोग कर सकते हैं onGloballyPositioned संशोधक।

कुछ इस तरह:

 var sizeTopBar by remember { mutableStateOf(IntSize.Zero) }

 TopAppBar(
        modifier = Modifier
          .onGloballyPositioned { coordinates ->
             sizeTopBar = coordinates.size,
          }
       //...
 )

कई कंपोज़ेबल को मापने और लेआउट करने के लिए जटिल लेआउट के साथ, Layout इसके बजाय कंपोज़ेबल। यह कंपोज़ेबल आपको बच्चों को मैन्युअल रूप से मापने और बाहर निकालने की अनुमति देता है।

4
Gabriele Mariotti 12 मई 2021, 14:59