最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JetpackCompose Scaffold組件使用教程

 更新時(shí)間:2023年01月04日 15:34:12   作者:知奕奕  
在今年的Google/IO大會(huì)上,亮相了一個(gè)全新的 Android 原生 UI 開(kāi)發(fā)框架-Jetpack Compose, 與蘋(píng)果的SwiftIUI一樣,Jetpack Compose是一個(gè)聲明式的UI框架

搭設(shè)基本Scaffold頁(yè)面

scaffold 組件遵循 Material Design,可以協(xié)助開(kāi)發(fā)者迅速構(gòu)建對(duì)應(yīng)框架頁(yè)面

準(zhǔn)備工作

首先在 drawable 文件夾內(nèi),添加幾張 vector images,用作我們的底部導(dǎo)航欄圖標(biāo)

在主頁(yè)面中聲明數(shù)據(jù)類,表示單個(gè)圖標(biāo)以及其解釋文本

data class Item(
    val name: String,
    val icon: Int
)

新增組件 mainBody,逐一添加三個(gè)底部按鈕的圖標(biāo)

@Composable
fun mainBody() {
    // 存儲(chǔ)當(dāng)前選中的底部按鈕的狀態(tài)
    var selectedItem by remember {
        mutableStateOf(0)
    }
    // 三個(gè)底部按鈕
    val items = listOf(
        Item("主頁(yè)", R.drawable.home),
        Item("列表", R.drawable.list),
        Item("設(shè)置", R.drawable.setting)
    )
    ...
}

主體編寫(xiě)

首先是設(shè)置 topBar,即頂部導(dǎo)航欄對(duì)應(yīng)按鈕

代碼很簡(jiǎn)單,但要注意使用的括號(hào)類型以及對(duì)應(yīng)嵌套關(guān)系!

Scaffold(
    topBar = {
        TopAppBar(
            title = { Text("主頁(yè)") },
            navigationIcon = {
                IconButton(onClick = { /*TODO*/ }) {
                    Icon(Icons.Filled.Menu, null)
                }
            }
        )
    },
    ...
){}

緊接著在 topBar 屬性后面寫(xiě)底部導(dǎo)航欄屬性 bottomBar

items.forEachIndexed 按照索引渲染,vue 的 v-for 懂吧,就這個(gè)原理!

依次渲染 BottomNavigationItem 即可;

bottomBar = {
    BottomNavigation {
        items.forEachIndexed { index, item ->
            BottomNavigationItem(
                // selectedItem 是內(nèi)置屬性,表示當(dāng)前選中的Item
                // onClick即切換當(dāng)前激活的Item
                selected = selectedItem == index,
                onClick = { selectedItem = index },
                // 這幾個(gè)屬性看看英文就懂了,不解釋
                icon = { Icon(painterResource(item.icon), null) },
                alwaysShowLabel = false,
                label = { Text(item.name) }
            )
        }
    }
}

這是總體的代碼:

@Composable
fun mainBody() {
    var selectedItem by remember {
        mutableStateOf(0)
    }
    val items = listOf(
        Item("主頁(yè)", R.drawable.home),
        Item("列表", R.drawable.list),
        Item("設(shè)置", R.drawable.setting)
    )
    Scaffold(
        topBar = {
            TopAppBar(
                title = { Text("主頁(yè)") },
                navigationIcon = {
                    IconButton(onClick = { /*TODO*/ }) {
                        Icon(Icons.Filled.Menu, null)
                    }
                }
            )
        },
        bottomBar = {
            BottomNavigation {
                items.forEachIndexed { index, item ->
                    BottomNavigationItem(
                        selected = selectedItem == index,
                        onClick = { selectedItem = index },
                        icon = { Icon(painterResource(item.icon), null) },
                        alwaysShowLabel = false,
                        label = { Text(item.name) }
                    )
                }
            }
        }
    ) {
        // 在scaffold里面塞一個(gè)box,糊弄一下
        Box(
            modifier = Modifier.fillMaxSize(),
            contentAlignment = Alignment.Center
        ) {
            Text(text = "主頁(yè)界面")
        }
    }
}

到此這篇關(guān)于JetpackCompose Scaffold組件使用教程的文章就介紹到這了,更多相關(guān)JetpackCompose Scaffold內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • unity3d發(fā)布apk在android虛擬機(jī)中運(yùn)行的詳細(xì)步驟(unity3d導(dǎo)出android apk)

    unity3d發(fā)布apk在android虛擬機(jī)中運(yùn)行的詳細(xì)步驟(unity3d導(dǎo)出android apk)

    這篇文章主要介紹了unity3d發(fā)布apk在android虛擬機(jī)中運(yùn)行的詳細(xì)步驟,需要的朋友可以參考下
    2014-05-05
  • Android之TextView自適應(yīng)大小

    Android之TextView自適應(yīng)大小

    對(duì)于設(shè)置TextView的字體默認(rèn)大小對(duì)于UI界面的好看程度是很重要的,小屏幕設(shè)置的文字過(guò)大或者大屏幕設(shè)置的文字過(guò)小都造成UI的不美觀?,F(xiàn)在就讓我們學(xué)習(xí)自適應(yīng)大小的TextView控件。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • android?studio組件通信:Intend啟動(dòng)Activity接收返回結(jié)果

    android?studio組件通信:Intend啟動(dòng)Activity接收返回結(jié)果

    這篇文章主要介紹了android?studio組件通信:Intend啟動(dòng)Activity接收返回結(jié)果,設(shè)計(jì)一個(gè)主Activity和一個(gè)子Activity(Sub-Activity),使用主Activity上的按鈕啟動(dòng)子Activity,并將子Activity的一些信息返回給主Activity,并顯示在主Activity上,需要的朋友可以參考一下
    2021-12-12
  • Android事件分發(fā)機(jī)制(上) ViewGroup的事件分發(fā)

    Android事件分發(fā)機(jī)制(上) ViewGroup的事件分發(fā)

    這篇文章主要為大家詳細(xì)介紹了Android ViewGroup的事件分發(fā)機(jī)制上篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android仿支付寶自定義密碼輸入框及安全鍵盤(pán)(密碼鍵盤(pán))

    Android仿支付寶自定義密碼輸入框及安全鍵盤(pán)(密碼鍵盤(pán))

    這篇文章主要介紹了Android仿支付寶自定義密碼輸入框及安全鍵盤(pán)(密碼鍵盤(pán)),需要的朋友可以參考下
    2018-01-01
  • Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料

    Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料

    本篇文章介紹了Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料,詳細(xì)的介紹了第三方授權(quán)登錄的實(shí)現(xiàn)代碼,有需要的朋友可以了解一下。
    2016-11-11
  • Android加載View中Background詳解

    Android加載View中Background詳解

    本文講解的是Android什么時(shí)候進(jìn)行View中Background的加載,十分的詳盡,十分全面細(xì)致,附上所有代碼,這里推薦給大家,希望大家能夠喜歡。
    2015-03-03
  • Android動(dòng)畫(huà)之雷達(dá)掃描效果

    Android動(dòng)畫(huà)之雷達(dá)掃描效果

    雷達(dá)掃描效果在我們?nèi)粘?huì)經(jīng)常看到,比如在新浪微博上有一個(gè)雷達(dá)功能,感覺(jué)類似于微信附近的人。只是多了一個(gè)類似于雷達(dá)掃描效果的動(dòng)畫(huà),某些知名安全軟件也有這樣的雷達(dá)效果,因此今天在這里小編帶著大家學(xué)習(xí)一下。
    2016-08-08
  • Android Flutter實(shí)戰(zhàn)之為照片添加顏色濾鏡

    Android Flutter實(shí)戰(zhàn)之為照片添加顏色濾鏡

    這篇文章我們將利用TweenAnimationBuilder來(lái)實(shí)現(xiàn)一個(gè)圖片調(diào)色的過(guò)渡動(dòng)畫(huà),從而實(shí)現(xiàn)為照片添加顏色濾鏡的效果,感興趣的可以了解一下
    2022-12-12
  • Android 自定義View之倒計(jì)時(shí)實(shí)例代碼

    Android 自定義View之倒計(jì)時(shí)實(shí)例代碼

    這篇文章主要介紹了Android 自定義View之倒計(jì)時(shí)實(shí)例代碼的相關(guān)資料,大多數(shù)app在注冊(cè)的時(shí)候,都有一個(gè)獲取驗(yàn)證碼的按鈕,點(diǎn)擊后,訪問(wèn)接口,最終用戶會(huì)收到短信驗(yàn)證碼。為了不多次寫(xiě)這個(gè)獲取驗(yàn)證碼的接口,下面將它自定義成一個(gè)view,方便使用,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

云梦县| 新安县| 昂仁县| 嘉祥县| 邛崃市| 德庆县| 汶上县| 安远县| 兴安盟| 鄂州市| 交城县| 个旧市| 汾阳市| 武威市| 民丰县| 留坝县| 乌海市| 泗水县| 阿克苏市| 深水埗区| 和龙市| 昌宁县| 凌海市| 威宁| 宜川县| 塘沽区| 渝北区| 苏尼特左旗| 五寨县| 泰州市| 陆河县| 屯昌县| 永平县| 万州区| 西安市| 平山县| 虹口区| 象山县| 乌拉特中旗| 油尖旺区| 康定县|