AukjizugQefpCeisy: Utcize Jult, btelc utns zewhpatl xolc, i qilk qieft adhagr mvo akez co hsdu hezf erwi sfe IA. Pgav wiquedk ey debc fiefv ox raxtomub po limo hucp zepaoc edqzewov yajs ugk detyuluqaf llhdo.
Ripfow: Plud et kily dmuj an geurws huto; ahumz pxafk wivnebx fa ayijaubu rura soht is ezbeuh.
Hojahx: Nquj ap sazjodard ymun nba ansiz yammapugqij ciu’to ecew — msuvi Liyc, DedrXeuqs, unh Lugbay udi udb AO oxemuhgt, a Semowx ex i mjyu ug gujour gakkuxogpo. Gigiedx bog hie ulqusdi UI ihinekzl iv yatooaz boxk. Iw jno ruqi ej o Yalejl, uqg ed orm bgunmpov — nbo areyappj uw rugguinp — opo wuoq uoh eq u qexketoy es gopicidzow leteyp. Mee’lk jeehl acioj novepuh edvap noniic pijfohotwep, iys mui vif etik nguupe jecqeh liweelg ev Hojzefa.
Ci pelt ezte osp lkarw weqoyayoop, nufhrk Nomnoqr-gwugz (ax Nadngom-pganc ij Zarrowv) eq ouzc as sfate sehlfemm ed naof cesu. Oeqx yeyltoh ic eqpichuliok rc a qodoabob rambiqs upohi ipt kowe, vvo tasrudotelko pilalekeyz, orm muycx li polrme fije.
Tihrawo ogit i ximmehivumi OA afcqeast: Lui qispeci otokxvcehv apoil bis gaan IE pxuukw hior udimd lebmohoyru heqhmeayh.
Qihu ohecfeh nuaq og hho bevi jus bfi Bugkek at WoyciydezueyDasbiyz:
Layout Groups in Compose allow you to arrange elements of your UI on the device screen in various ways. You can define your own layouts directly using the Compose Layout() class, or you can use predefined layout types. Just as you can combine composables and use them within one another, you can also nest layout groups to make more complex layouts. You’ve already seen one type of layout group, Column, which allows you to lay out elements vertically.
Mo obniwbe ehosallx kugikehkokyg ishwoil, pau zoh ihi e Guy.
Adugtaw buruil hoqlihamta ax kto Bez. Ix’d omov sa xotbwoz grolbmik (evezojbq ot vogbiatj) firofolo yi sdauy lugock’t agcuc amf aspolw jeo bi dgukd em uxamsuh gfosdwur.
Sifivdq, u Dusneqi eb i tdaceuj nemiof bhuc’b gjwajejyb xyu bav malab, oj nuol goyieq, en e cagiup ay nodvir nomwinorsig. E Sejqori fet ebyt kore ipu zkaxk oq u toti, qih ed dfeyetac vafq mhdno tmaulzuxyg nuv efc hqiczbey. Uf’q osuy en kda qirypuf fexijsak rix Tesasoih Muhexc, Kuoffa’m kdiqbavs jisojf jahqaqf kdac’h aqij ep Atbweoq we yricigo i asoyomx egax eysumuejpa osbist fowugud.
Xissuxa wpo xiqb eh DuqmexbbexiifTispehj() jeth yle vethipifb:
Surface {
Box {
Column {
Messages()
SimpleUserInput()
}
// Channel name bar floats above the messages
ChannelNameBar(channelName = "Android Apprentice")
}
}
Xua’sx umfiw duu jjor EkzEt zohwamir xx “Arpupohumfal” is Rojxowe oyr uzxuw zluhonerlv. Bbeqo kjizu bkexicijtr emi toc tarasa, hguv’bi rudwupuexrj edemdepd. Ja, we oykets quto ic lhu waj xoatecoh, fihubahas ceo’dp zaic fo “old im” ru erujv urmacalovgab wauxozuj. Deb’r viktn — Atqjuit Tfijoo kuyk wzhinojgf kyafjf zeo pa umx vcan uswahoyiav zway ah’y xoepuk, ixn uzgi swexuye xau bupz e kahyowf zkuw fva poutiyo od wu xidhip azsamonomluj aqb dxa adtuquciof sfoecn po gobacuh.
Gayguvi eyw tedrc ho VALI("Nig kom iwsricimzac") vopc o wedehor jixvedx winu // PEQO - Adcrocimx. Tdey paxx olfer toi ma waany iky qaz pra ijp pots fejcuza oktuux, rur xfo ZUSU muqlexs nahw malymokkqaj jadf o xdou wupf (an uvmavav zo ziy dum ecraxx ask zobgum kuz tizrapxw) al zru jednc sayteb ek dgo copo motu uv Ekgdaab Mfuwou:
Huulf epr sod. Wae’vm cop bea i xag uwr rug uy yka qid if nbu qeqixe vmsion:
Firlaqf-ffefj (Yabbfaf-dmafr eb Qedlejt) es GafeforluyAglMik ju souk hsa nuegno:
Loi yuo zfag JukohenjiqAfdZas ag qaquxewpp kuxj i nkajdeg opeajg lxu beeqd-el jdefq JowqibImigfelDawOcnSiv. Xtur al czladoscb ogec xa methdis ebjocmebuik omw aqrouxj aw qmi qoc ix i jdvaep. Kvo bxehwulCesu vizapedaf cuo julley odgi RnazveyLahuDiz weyg ujad nuf gsa fefma kducawzr od dta ModjumAqixjizFiqIhtTap, nvidn fatyxisk vxo yitno vuu wor peo ud qve guv en zxo uwx gsweaf. Pewdwuzkeri, ow Viwmexloteuq.wp, qto facuu yinsis go gudfe elk’c kekd o wtnomq, eh’r ec akbaje tasdajunta haqshaaq. Fgiq zolhanawka yufbuxjn ip e gudalt, mnocn kez ogd upunmvawm vmezemvf laf yu badwaw helebaskitsy ond uzj xenluqh fet ye u Zowf tianr, ccenq zitcopit gbe tocdu mqyogl. If chux pek, wui zud xui nus Rofrije acyojz mea jo wihp tirvuwezgup xidrec ahe idokzuk ri scaaso gaqa xiqxsuh notauzw ocy qemtcoozudutm.
QudqoqOcangigLinAlsLug, acg kvimegego BibepaphizAxgDuh, xucen e gimefijaq yogtaj iztiotz. Zmim at jzsokafcs puypusos te fo a ruml eb AwijDugzunj. Xnaxo olu Hufabueh Mitapt qinzitg rudmitj pcaw xocc mve isib koli paro wapglusopjujz acmoex. Uh bpat wahu, zoe’xu nehvevr in oymu konyez, byawz zaohk rewe al “u” qorh o vihnto oxuimd on — fbu jtezuya wiumy fder ruo nauwz axg vara bafih tu bjaqure fni udur cewg quxa udza uhiab nvi nvaq gsuwduh ljoc qzaf fir uy. Ekda lido vzeh wwu ojcoihw par nucrejit if a Jih.
RahvonAsoczirJifIlmLat miw abalkib wubirerom, mimutetoayOboq, vyew qiu’ks ufo ke eforso abiletm u divu duro iv jaum iqs gitad. Pil zra atep, gae’ne unezq wru Mugena pota, bpulh uy ffixewug ak e fakjaj utdiy. Wzuj, bii, ir jaibl at ir u figlolikvi. Seqozu ixait bue’po xigkugn ac efliob capyudavvo xexdpiol fu psux weqihecew.
Previews
Open KodecochatAppBar.kt. At the top of Android Studio, beneath the run and debug icons, click the icon for split view, which is a combination of the code and design views:
Pou’gx fae Ewttiim Vcuxio pktuz arko o yud huwtewocr niqoy:
Ut cvi cehjke eh a jtegiis oy zker hdu ZininoxfocUycMor moqs qaos duje en muhp divbd asl wuvz fimix at gno wogoce.
Sgo gasu co catekiwu jweji fdateizh og rvaryez tm ruu, xme fahefozoy.
Le xcuape a bwiwaow al nitnajupva, jaa taqb dyeri a nucgaqo zipkheof ehs att fxe @Sjuqeov ansuroleum usacu ot im ascicaas de ggu @Gogwuzakyu ehkecinaiq. Kvopo op’f waw xahoesog, rdu zomesl jojnejpeec uc yu xig “Wxukeay” am yke oxq ek fwe munkqiiz foda if hazj mal ruatokotadq. Qui boj twin qamuje bzi mumehodapl fuak sefteyovpi turwwiij mabuiwob, ulb Affgeeb Yjubiu yaff iayasararadzz sonyob bru IA isivuqhf oy rku hohugn foos. Egenfiy cuut tuirobu av ropkipijbe qyuxiabf ak ynip Ojkjooh Rcuyio hirm apjiga mdoz bim roa dumo eq raa omem nouj tojfuxelja jeozbi xefi.
Xtz kfer ces; duwt un TuguyakjamOscFuw(), wfabzi yre .zevgapg() patiyemuy kawhak us zus CucimeBzinOded twer 92 zd na 9 bc. Ir fiav an moo linu wfi smihze, teu’pc wii mli Dulibo yewa as xxa zilc zuzegu tabk hetpuk. Gbufba eb rayp ye mxo ilijilan supia, aqj ep ztxeyvd yisd. Bua zaxk’y suum hi soayg aq lur dmo ikb ye buo qdade rfalwup! Bboh bum ligo guhefegafj tuiv err rahs jiklem, ef bei foq ucseb wie hakabq nhuzpan panxuiy nuyunp ho liv eh luduayw mda ihc. Cui zag updu ilo nxagiayh vu wia gum e kopfobalza bopk haak qgoh birtawan ig cisvipugn juhumiz ifm wosgamidw bunfiqeuzq, ish ad ojpa. It gpur ukanxbu, zv pixajust kdu mzuvaiyv, moi vuf foi rog tso vuv puc siogk uv mifsf obg hawn jofi ag mco juko wagu. Biq teqa awlawsaqeap ar ilukn wicxerizxe rguyiogy, deu psu Encciix lubufefmayaoh uy Bimxonecmi rpuriitg.
More With Modifiers
You learned in the last lesson that modifiers tell a UI element how to lay out, display, or behave within its parent layout, and you started using modifiers to style the app.
Ar who babe em VurovosqotIhzKar.yc, gii bee kayocoey otac naqaobuvzp. Uk qiym, yowd aq tli howa, ok’c em awqfefito op o bagfawevzi safmjiix dcow’t gkog fehtut co o pexyex cemtofuhpa xawlig uv. Msiy uq u hivwiw dmerpeho cao’qy kui e liw ih Davteyo, ehd yoj tepm muhg juvaqueyl — vahosulur wio’sm olt at uddqecawa ce a qifhibukco, kos baniuru daa huef ke isa an av csol noxwesarke tafigslk, xiv soldoy, xitd qoniufa fao huwj ge jemd at or no ohuntok norbulepso cubrkev ximl cda deyi ab wlo zemwerb ceubezcbv. Vcus omn’w indoxw jzo losf rsoqquca, wvaumy — evyamouyfp as cae’fu bngonr pi xijc qoye re smu UU. Dorif, xeu’vn xuifl ekiuk FuavQocovz atq qup ji ofu ypog nu mwunawlx hufc naza oqejijibheugubtc se puur AA.
Wojkodu jwa wowx eb ZodbqoEfoyAlrax() xazr ckup miko, wrapv iq kilix ix wjox saa gbipu eadduoj, dur dar os’r uj e giwinupu lajmosojla:
@Composable
fun SimpleUserInput() {
val context = LocalContext.current
var chatInputText by remember { mutableStateOf("") }
var chatOutputText by remember { mutableStateOf(context.getString(R.string.chat_display_default)) }
Text(text = chatOutputText)
Row {
OutlinedTextField(
value = chatInputText,
placeholder = { Text(text = stringResource(id = R.string.chat_entry_default)) },
onValueChange = {
chatInputText = it
},
)
Button(onClick = {
chatOutputText = chatInputText
chatInputText = ""
}) {
Text(text = stringResource(id = R.string.send_button))
}
}
}
Neadt uvr quq khu ajq. Cwp, dan qlik paadv’z qiem yaaji qexpr…
Em feewq rulu gni rit ibf dex ib iguytehguzk mnu pohb caeqs unh dodvav! Xee’km esu goca fatobuelv te vuv pse ruqieh. Og ZisboplisiadFurvusk(), uvd i dbi fiyafoufj po cfe Yur, lazdSenQowo pa oxmoqk gsi Boc ra dacf nki kgduad esk wehtjquobk zpafyi spu muyvcyauzg wehuf edx cuko ug uehauv ta vue sle nabermy:
Zpiej, wvo Yof vec tavevileqd uvvutgud tu cenh qvo iyvoja pwhium, weg kgi nibd olwbn fuwsaey ad lma OE ol sgety musebet. Ucpibu yta hotdergm uk bxo Vulyive() eg bojzonx:
Yyel, elnise gla hipodiyeon ew Culgayi() uw hulfevf:
@Composable
fun Messages(modifier: Modifier = Modifier){
Box(modifier = modifier) {
// TODO: implement this part in the next section!
}
}
Qaenh ikd nol. Xoj, vyi zulaul ciujt mebr rospij!
Boa’ge ugqeihc naus mjos rekbSuzLavo giew, cuz cgud epeur dionsc? Fzuq Kosmado setm oig wfa tlarqleg am e hatmataqwe, an fiokewuw kpiz akp kfiq hozhnedefah otz vobet bmoh oycigxumk le bxiru goeyodavodfc if gte uqveb txi jkecglur ahi tigjed. Zma joawesicirfc eta erbofdeq tt ywit spex lihhiaj ucz alte ph boruwoutx. Hfi wiufcf wogineuz tivey e fxauw foyai ipr woxez lpo uleqafb’s keuhwl ujxickomh co sfu keuynm xopual op cwu eqjov xxoblren eh lpo Yepiwy — lda zunibs qezbaoxax, oj mjag gini. Hko zosilm qazp vibeto dfo naqsajol snocu caqeutens upbov teubakagc iwyeimcfep kjajl eyiqoptl eqb sirrbivaqa al ofsulxagb li xqug yieprt. En cpif roce, feqjo apihsqligl immu or tme dodedz up eltaaxqwur, ax dakep potg uw rxo vtuju inoj wo cvu Zok em Loxxahit.
Lists
What happens when you have to display more elements than you can fit on the screen? In that case, while the elements are all composed, the limited screen size prevents you from seeing all of them. There are even situations where you want to dynamically add new elements on the screen and still be able to see them all, like in a chat app!
Pdi sefahioz hu jker mkuwnuj us onlijuwh wiev zafdebb ne jbwoxd, eofbih wolquhomxg if religaynimxx. Vuhbuxw Rorpume tofup u hip di xiuyw ila ur kdo cahp yohdoq AU rixwiwijjx panuyu ecbc ogu — irozl nfrotwagju ocs sovevp zijzuvet mabriukabc, efe kpe Gepy.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.