Asistenmemiliki jalur intergrasi di banyak perangkat Android. Pelajari cara menambahkan fitur suara ke aplikasi Anda. Pemula. Cara sederhana dan efisien guna membuat daftar scroll di Compose: Tambahkan konten on demand dengan sedikit baris kode. Dapatkan ringkasan hal baru di Android Studio, tur beragam fitur yang digunakan guna
RelativeLayout. 1. Pertama, buat project baru, dengan memilih menu file -> new-> -> new project. 2. Kemudian isi nama project nya sesuai dengan keinginan anda. Misalnya disini saya membuat namanya 'layoutsaya'. 3. Kemudian pada Target Android Device pilih minimum SDK nya API 17: Android 4.2 (Jelly Bean). 4.
Gunakanpengetahuan Anda tentang tata letak untuk membuat aplikasi foto anjing yang dapat di-scroll di Android Studio, dan jalankan pengujian terhadap kode Anda untuk memastikan semuanya berfungsi seperti yang diharapkan.
Solusinyauntuk menampilkan sebuah gambar yang ada di Internet dengan cara paling ampuh untuk sebuah aplikasi yang dibuat di Android Studio, yaitu menggunakan Library tambahan bernama Glide. Glide adalah Image Loader Library untuk Android yang dikembangkan oleh bumptech dan merupakan perpustakaan yang direkomendasikan oleh Google.
Pelajaricara penggunaan layout-layout di atas pada tutorial berikut : Cara membuat layout dengan Linear Layout; Cara membuat layout dengan Frame Layout; Cara membuat layout dengan Relative Layout 5. Edit String. Kita ubah nama appnya menggunakan nama " Dashboard ". Tambahkan kode-kode berikut pada Strings.xml.
Caramenambahkan permission untuk mengambil data email pengguna adalah dengan menambahkan baris kode dibawah pada file 1. . Setelah menambahkan baris diatas selanjutnya kita sudah diperbolehkan untuk mengambil data email pengguna dari Class java.
Okelangsung ajah yang pertama yang harus kita lakukan adalah membuka android studio yang akan kita pakai untuk membuat Scroll Text. Setelah terbuka langkah selanjutnya adalah kita harus membuat project terlebih dahulu dengan cara klik start a new Android Studio project. Setelah itu kita beri nama project kita sesuai dengan tema yang akan kita buat. Lalu pada bagian Android Device kita langsung klik next.
3 Lakukan login pada umumnya dengan benar. 4. Klik Buat Kuis untuk membuat kuis online baru. 5. Isikan nama kuis online, bahasa pengantar, dan tipe kuis dengan sesuai kebutuhan. Setelah itu, klik Buat. 6. Langsung masuk ke bagian Halaman Permainan >> Pertanyaan untuk mengisi beberapa soal dan jawaban yang dibutuhkan.
4Hkm. Stay organized with collections Save and categorize content based on your preferences. Try the Compose way Jetpack Compose is the recommended UI toolkit for Android. Learn how to use touch and input in Compose. In Android, scrolling is typically achieved by using the ScrollView class. Any standard layout that might extend beyond the bounds of its container should be nested in a ScrollView to provide a scrollable view that's managed by the framework. Implementing a custom scroller should only be necessary for special scenarios. This lesson describes such a scenario displaying a scrolling effect in response to touch gestures using scrollers. Your app can use scrollers Scroller or OverScroller to collect the data needed to produce a scrolling animation in response to a touch event. They are similar, but OverScroller also includes methods for indicating to users that they've reached the content edges after a pan or fling gesture. Starting in Android 12 API level 31, the visual elements stretch and bounce back on a drag event, and fling and bounce back on a fling event. On Android 11 API level 30 and lower, the boundaries display a "glow" effect after a drag or fling gesture to the edge. The InteractiveChart sample uses the EdgeEffect class actually the EdgeEffectCompat class to display these overscroll effects. Note We recommend using OverScroller rather than Scroller for scrolling animations. OverScroller provides the best backward compatibility with older devices. Also, note that you generally only need to use scrollers when implementing scrolling yourself. ScrollView and HorizontalScrollView do all of this for you if you nest your layout within them. A scroller is used to animate scrolling over time, using platform-standard scrolling physics such as friction, velocity, and other qualities. The scroller itself doesn't actually draw anything. Scrollers track scroll offsets for you over time, but they don't automatically apply those positions to your view. It's your responsibility to get and apply new coordinates at a rate that will make the scrolling animation look smooth. Understand scrolling terminology "Scrolling" is a word that can take on different meanings in Android, depending on the context. Scrolling is the general process of moving the viewport that is, the 'window' of content you're looking at. When scrolling is in both the x and y axes, it's called panning. The sample application provided with this class, InteractiveChart, illustrates two different types of scrolling, dragging and flinging Dragging is the type of scrolling that occurs when a user drags their finger across the touch screen. Simple dragging is often implemented by overriding onScroll in For more discussion of dragging, see Dragging and Scaling. Flinging is the type of scrolling that occurs when a user drags and lifts their finger quickly. After the user lifts their finger, you generally want to keep scrolling moving the viewport, but decelerate until the viewport stops moving. Flinging can be implemented by overriding onFling in and by using a scroller object. This is the use case that is the topic of this lesson. Panning. When scrolling along both the X and Y axes, it's called panning. It's common to use scroller objects in conjunction with a fling gesture, but they can be used in any context where you want the UI to display scrolling in response to a touch event. For example, you could override onTouchEvent to process touch events directly, and produce a scrolling effect or a "snapping to page" animation in response to those touch events. Components that contain built-in scrolling implementations The following Android components contain built-in support for scrolling and overscrolling behavior RecyclerView ListView GridView ScrollView NestedScrollView HorizontalScrollView ViewPager ViewPager2 If your app needs to support scrolling and overscrolling inside a different component, do the following Create a custom, touch-based scrolling implementation. To support devices that run Android 12 and higher, implement the stretch overscroll effect. This section describes how to create your own scroller, if your app uses a component that doesn't contain built-in support for scrolling and overscrolling. The following snippet comes from the InteractiveChart sample provided with this class. It uses a GestureDetector, and overrides the method onFling. It uses OverScroller to track the fling gesture. If the user reaches the content edges after they perform the fling gesture, the container indicates that the user has reached the end of the content. The indication depends on the version of Android that a device runs On Android 12 and higher, the visual elements stretch and bounce back. On Android 11 and lower, the visual elements display a "glow" effect. Note The InteractiveChart sample app displays a chart that you can zoom, pan, scroll, and so on. In the following snippet, mContentRect represents the rectangle coordinates within the view that the chart will be drawn into. At any given time, a subset of the total chart domain and range are drawn into this rectangular area. mCurrentViewport represents the portion of the chart that is currently visible in the screen. Because pixel offsets are generally treated as integers, mContentRect is of the type Rect. Because the graph domain and range are decimal/float values, mCurrentViewport is of the type RectF. The first part of the snippet shows the implementation of onFling Kotlin // The current viewport. This rectangle represents the currently visible // chart domain and range. The viewport is the part of the app that the // user manipulates via touch gestures. private val mCurrentViewport = RectFAXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX // The current destination rectangle in pixel coordinates into which the // chart data should be drawn. private lateinit var mContentRect Rect private lateinit var mScroller OverScroller private lateinit var mScrollerStartViewport RectF ... private val mGestureListener = object { override fun onDowne MotionEvent Boolean { // Initiates the decay phase of any active edge effects. if AXIS_X_MIN right AXIS_Y_MIN bottom - && && !mEdgeEffectRightActive { mEdgeEffectRightActive = true needsInvalidate = true } if canScrollY && currY - && && !mEdgeEffectBottomActive { mEdgeEffectBottomActive = true needsInvalidate = true } ... } } Java // Edge effect / overscroll tracking objects. private EdgeEffectCompat mEdgeEffectTop; private EdgeEffectCompat mEdgeEffectBottom; private EdgeEffectCompat mEdgeEffectLeft; private EdgeEffectCompat mEdgeEffectRight; private boolean mEdgeEffectTopActive; private boolean mEdgeEffectBottomActive; private boolean mEdgeEffectLeftActive; private boolean mEdgeEffectRightActive; Override public void computeScroll { boolean needsInvalidate = false; // The scroller isn't finished, meaning a fling or programmatic pan // operation is currently active. if { Point surfaceSize = computeScrollSurfaceSize; int currX = int currY = boolean canScrollX = > AXIS_X_MIN AXIS_Y_MIN - && && !mEdgeEffectRightActive { mEdgeEffectRightActive = true; needsInvalidate = true; } if canScrollY && currY - && && !mEdgeEffectBottomActive { mEdgeEffectBottomActive = true; needsInvalidate = true; } ... } Here is the section of the code that performs the actual zoom Kotlin lateinit var mZoomer Zoomer val mZoomFocalPoint = PointF ... // If a zoom is in progress either programmatically or via double // touch, performs the zoom. if { val newWidth Float = 1f - * val newHeight Float = 1f - * val pointWithinViewportX Float = - / val pointWithinViewportY Float = - / - newWidth * pointWithinViewportX, - newHeight * pointWithinViewportY, + newWidth * 1 - pointWithinViewportX, + newHeight * 1 - pointWithinViewportY constrainViewport needsInvalidate = true } if needsInvalidate { } Java // Custom object that is functionally similar to Scroller Zoomer mZoomer; private PointF mZoomFocalPoint = new PointF; ... // If a zoom is in progress either programmatically or via double // touch, performs the zoom. if { float newWidth = 1f - * float newHeight = 1f - * float pointWithinViewportX = - / float pointWithinViewportY = - / - newWidth * pointWithinViewportX, - newHeight * pointWithinViewportY, + newWidth * 1 - pointWithinViewportX, + newHeight * 1 - pointWithinViewportY; constrainViewport; needsInvalidate = true; } if needsInvalidate { } This is the computeScrollSurfaceSize method that's called in the above snippet. It computes the current scrollable surface size, in pixels. For example, if the entire chart area is visible, this is simply the current size of mContentRect. If the chart is zoomed in 200% in both directions, the returned size will be twice as large horizontally and vertically. Kotlin private fun computeScrollSurfaceSize Point { return Point * AXIS_X_MAX - AXIS_X_MIN / * AXIS_Y_MAX - AXIS_Y_MIN / } Java private Point computeScrollSurfaceSize { return new Point int * AXIS_X_MAX - AXIS_X_MIN / int * AXIS_Y_MAX - AXIS_Y_MIN / } For another example of scroller usage, see the source code for the ViewPager class. It scrolls in response to flings, and uses scrolling to implement the "snapping to page" animation. Starting in Android 12, EdgeEffect adds the following APIs for implementing the stretch overscroll effect getDistance onPullDistance To provide the best user experience with stretch overscroll, do the following When the stretch animation is in effect when the user touches the contents, register the touch as a "catch". The user stops the animation and begins manipulating the stretch again. When the user moves their finger in the opposite direction of the stretch, release the stretch until it's fully gone, and then begin scrolling. When the user flings during a stretch, fling the EdgeEffect to enhance the stretch effect. Catch the animation When a user catches an active stretch animation, returns 0. This condition indicates that the stretch should be manipulated by the touch motion. In most containers, the catch is detected in onInterceptTouchEvent, as shown in the following code snippet Kotlin override fun onInterceptTouchEventev MotionEvent Boolean { ... when action and { -> ... isBeingDragged = > 0f > 0f ... } return isBeingDragged } Java Override public boolean onInterceptTouchEventMotionEvent ev { ... switch action & { case ... mIsBeingDragged = > 0 > 0; ... } } In the preceding example, onInterceptTouchEvent returns true when mIsBeingDragged is true, so it's sufficient to consume the event before the child has an opportunity to consume it. Release the overscroll effect It's important to release the stretch effect prior to scrolling to prevent the stretch from being applied to the scrolling content. The following code sample applies this best practice Kotlin override fun onTouchEventev MotionEvent Boolean { val activePointerIndex = when { -> val x = val y = var deltaY = y - mLastMotionY val pullDistance = deltaY / height val displacement = x / width if deltaY 0f { deltaY -= height * pullDistance, displacement; } if deltaY > 0f && > 0f { deltaY += height * -pullDistance, 1 - displacement; } ... } Java Override public boolean onTouchEventMotionEvent ev { final int actionMasked = switch actionMasked { case final float x = final float y = float deltaY = y - mLastMotionY; float pullDistance = deltaY / getHeight; float displacement = x / getWidth; if deltaY 0 { deltaY -= getHeight * pullDistance, displacement; } if deltaY > 0 && > 0 { deltaY += getHeight * -pullDistance, 1 - displacement; } ... When the user is dragging, you must consume the EdgeEffect pull distance before you pass the touch event to a nested scrolling container or drag the scroll. In the preceding code sample, getDistance returns a positive value when an edge effect is being displayed and can be released with motion. When the touch event releases the stretch, it is first consumed by the EdgeEffect so that it will be completely released before other effects, such as nested scrolling, are displayed. You can use getDistance to learn how much pull distance is required to release the current effect. Unlike onPull, onPullDistance returns the consumed amount of the passed delta. Starting in Android 12, if onPull or onPullDistance are passed negative deltaDistance values when getDistance is 0, the stretch effect doesn't change. On Android 11 and lower, onPull allows negative values for the total distance to show glow effects. Opt out of overscroll You can opt out of overscroll in your layout file or programmatically, as shown in the following sections Opt out in your layout file The following snippet shows the androidoverScrollMode set in the layout file ... Opt out programmatically The following code snippet shows how to opt out programmatically Kotlin = Java
Perguntada 3 anos, 5 meses atrás Vista 3mil vezes Tenho esse layout já feito, porém em celulares menores os botões ficam inacessíveis, gostaria de implementar scrolls tanto na vertical quanto na horizontal quando necessário Esse é o xml do meu layout androidlayout_height="match_parent" androidvisibility="visible" applayout_behavior="string/appbar_scrolling_view_behavior" toolscontext=". toolsshowIn="layout/activity_main"> >" androidvisibility="invisible" applayout_constraintEnd_toEndOf="parent" applayout_constraintTop_toBottomOf="+id/load" /> perguntada 10/01/2020 às 1741 Cara é bem simples, na verdade. Você pode simplesmente aninhar as classes VerticalScrollView e HorizontalScrollView para obter o resultado necessário. Veja uma possível solução. respondida 11/01/2020 às 126 2 Você deve fazer log-in para responder a esta pergunta. Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda. 1. Sebelum memulai Dalam codelab ini, Anda akan mempelajari cara membuat daftar yang dapat di-scroll di aplikasi menggunakan Jetpack Compose. Anda akan mengerjakan aplikasi Affirmations, yang menampilkan daftar afirmasi yang dipasangkan dengan gambar indah untuk membawa hal positif ke hari Anda. Data sudah ada, Anda hanya perlu mengambil data tersebut dan menampilkannya di UI. Prasyarat Pemahaman tentang Daftar di Kotlin Pengalaman membuat tata letak dengan Jetpack Compose Pengalaman menjalankan aplikasi di perangkat atau emulator Yang akan Anda pelajari Cara membuat kartu Desain Material menggunakan Jetpack Compose Cara membuat daftar yang dapat di-scroll menggunakan Jetpack Compose Yang akan Anda build Anda akan mengambil aplikasi yang sudah ada dan menambahkan daftar yang dapat di-scroll ke UI Produk jadi akan terlihat seperti ini Yang akan Anda butuhkan Komputer dengan akses internet, browser web, dan Android Studio Akses ke GitHub Mendownload kode awal Di Android Studio, buka folder basic-android-kotlin-compose-training-affirmations. Buka halaman repositori GitHub yang disediakan untuk project. Pastikan nama cabang cocok dengan nama cabang yang ditentukan dalam codelab. Misalnya, dalam screenshot berikut, nama cabang adalah main utama. Di halaman GitHub project, klik tombol Code yang akan menampilkan pop-up. Pada pop-up, klik tombol Download ZIP untuk menyimpan project di komputer. Tunggu download selesai. Temukan file di komputer Anda mungkin di folder Downloads. Klik dua kali pada file ZIP untuk mengekstraknya. Tindakan ini akan membuat folder baru yang berisi file project. Membuka project di Android Studio Mulai Android Studio. Di jendela Welcome to Android Studio, klik Open. Catatan Jika Android Studio sudah terbuka, pilih opsi menu File > Open. Di file browser, buka lokasi folder project yang telah diekstrak kemungkinan ada di folder Downloads. Klik dua kali pada folder project tersebut. Tunggu Android Studio membuka project. Klik tombol Run untuk mem-build dan menjalankan aplikasi. Pastikan aplikasi di-build seperti yang diharapkan. 2. Menonton video tutorial coding langsung Opsional Jika Anda ingin menonton salah satu instruktur kursus saat tengah menyelesaikan codelab, putar video di bawah. Sebaiknya luaskan video ke layar penuh dengan ikon ini di pojok kanan bawah video agar Anda dapat melihat Android Studio dan kodenya dengan lebih jelas. Langkah ini opsional. Anda juga dapat melewati video dan langsung memulai petunjuk codelab. 3. Membuat class data item daftar Membuat class data untuk Affirmation Di aplikasi Android, daftar terdiri dari item daftar. Untuk data tunggal, ini bisa berupa hal sederhana seperti string atau bilangan bulat. Untuk item daftar yang memiliki beberapa data, seperti gambar dan teks, Anda memerlukan class yang berisi semua properti ini. Class data adalah jenis class yang hanya berisi properti. Class tersebut dapat menyediakan beberapa metode utilitas agar berfungsi dengan properti tersebut. Buat paket baru di bagian Namai paket baru tersebut dengan model. Paket model akan berisi model data yang akan direpresentasikan oleh class data. Class data tersebut akan terdiri dari properti yang mewakili informasi yang relevan dengan yang akan disebut "Affirmation", yang akan terdiri dari resource string dan resource gambar. Paket adalah direktori yang berisi beberapa class dan bahkan direktori lainnya. Buat class baru di paket Namai class baru tersebut dengan Affirmation dan jadikan Data Class. Setiap Affirmation terdiri dari satu gambar dan satu string. Buat dua properti val di class data Affirmation. Salah satunya harus disebut stringResourceId dan yang lainnya imageResourceId. Keduanya harus berupa bilangan bulat. data class Affirmation val stringResourceId Int, val imageResourceId Int Beri tag pada properti stringResourceId dengan anotasi StringRes dan beri tag imageResourceId dengan DrawableRes. stringResourceId mewakili ID untuk teks afirmasi yang disimpan di resource string. imageResourceId mewakili ID untuk gambar afirmasi yang disimpan di resource drawable. data class Affirmation StringRes val stringResourceId Int, DrawableRes val imageResourceId Int Sekarang, buka file di paket dan hapus tanda komentar pada konten class Datasource. class Datasource { fun loadAffirmations List { return listOf Affirmation Affirmation Affirmation Affirmation Affirmation Affirmation Affirmation Affirmation Affirmation Affirmation } } 4. Menambahkan daftar ke aplikasi Membuat kartu item daftar Aplikasi ini dimaksudkan untuk menampilkan daftar afirmasi. Langkah pertama dalam mengonfigurasi UI untuk menampilkan daftar adalah membuat item daftar. Setiap item afirmasi terdiri dari gambar dan string. Data untuk setiap item ini dilengkapi dengan kode awal, dan Anda akan membuat komponen UI untuk menampilkan item tersebut. Item akan terdiri dari composable Card, yang berisi Image dan composable Text. Di Compose, Card adalah platform yang menampilkan konten dan tindakan dalam satu penampung. Kartu Affirmation akan terlihat seperti ini Kartu ini menampilkan gambar dengan beberapa teks di bawahnya. Tata letak vertikal ini dapat dicapai menggunakan composable Column yang digabungkan dalam composable Card. Anda dapat mencobanya sendiri, atau ikuti langkah-langkah di bawah untuk melakukannya. Buka file Buat metode baru di bawah metode AffirmationApp, yang disebut AffirmationCard, dan anotasikan dengan anotasi Composable. Composable fun AffirmationApp { AffirmationsTheme { } } Composable fun AffirmationCard { } Edit tanda tangan metode untuk mengambil objek Affirmation sebagai parameter. Objek Affirmation berasal dari paket model. Composable fun AffirmationCardaffirmation Affirmation { } Tambahkan parameter modifier ke tanda tangan. Setel nilai default Modifier untuk parameter. Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { } Di dalam metode AffirmationCard, panggil composable Card. Teruskan parameter berikut modifier dan elevation. Teruskan objek Modifier dengan atribut padding yang disetel ke untuk parameter modifier. Teruskan nilai untuk elevation. Properti elevation akan dibahas secara lebih mendetail nanti. Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { Cardmodifier = elevation = { } } Tambahkan composable Column di dalam composable Card. Item dalam composable Column menyusun dirinya sendiri secara vertikal di UI. Ini memungkinkan Anda menempatkan gambar di atas teks terkait. Sebaliknya, composable Row mengatur item yang ditampung secara horizontal. Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { Cardmodifier = elevation = { Column { } } } Tambahkan composable Image di dalam isi lambda dari composable Column. Ingat kembali bahwa composable Image selalu memerlukan resource untuk ditampilkan, dan contentDescription. Resource ini harus berupa painterResource yang diteruskan ke parameter painter. Metode painterResource akan memuat vektor drawable atau format aset raster seperti PNG. Selain itu, teruskan stringResource untuk parameter contentDescription. Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { Cardmodifier = elevation = { Column { Image painter = painterResource contentDescription = stringResource } } } Selain parameter painter dan contentDescription, teruskan modifier dan contentScale. contentScale menentukan cara gambar harus diskalakan dan ditampilkan. Objek Modifier harus memiliki atribut fillMaxWidth yang disetel dan tinggi contentScale harus Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { Cardmodifier = elevation = { Column { Image painter = painterResource contentDescription = stringResource modifier = Modifier .fillMaxWidth .height contentScale = } } } Di dalam Column, buat composable Text setelah composable Image. Teruskan stringResource dari ke parameter text, teruskan objek Modifier dengan atribut padding yang disetel ke dan setel tema teks dengan meneruskan ke parameter style. Composable fun AffirmationCardaffirmation Affirmation, modifier Modifier = Modifier { Cardmodifier = elevation = { Column { Image painter = painterResource contentDescription = stringResource modifier = Modifier .fillMaxWidth .height contentScale = Text text = stringResource modifier = style = } } } Pratinjau composable AffirmationCard Kartu ini adalah inti dari UI untuk aplikasi Affirmations, dan Anda telah bekerja keras untuk membuatnya. Untuk memeriksa apakah kartu sudah benar, Anda dapat membuat composable yang dapat dilihat pratinjaunya tanpa meluncurkan seluruh aplikasi. Buat metode pribadi bernama AffirmationCardPreview. Anotasikan metode dengan Preview dan Composable. Preview Composable private fun AffirmationCardPreview { } Di dalam metode, panggil composable AffirmationCard, dan teruskan objek Affirmation baru dengan resource string dan resource drawable yang diteruskan ke konstruktornya. Preview Composable private fun AffirmationCardPreview { AffirmationCardAffirmation } Buka tab Split dan Anda akan melihat pratinjau AffirmationCard. Jika perlu, klik Build & Refresh di panel Design untuk menampilkan pratinjau. Membuat daftar Komponen item daftar adalah elemen penyusun daftar. Setelah item daftar dibuat, Anda dapat memanfaatkannya untuk membuat komponen daftar itu sendiri. Buat fungsi yang disebut AffirmationList, anotasikan dengan anotasi Composable, dan deklarasikan List objek Affirmation sebagai parameter di tanda tangan metode. Composable private fun AffirmationListaffirmationList List { } Deklarasikan objek modifier sebagai parameter dalam tanda tangan metode dengan nilai default Modifier. Composable private fun AffirmationListaffirmationList List, modifier Modifier = Modifier { } Di Jetpack Compose, daftar yang dapat di-scroll dapat dibuat menggunakan composable LazyColumn. Perbedaan antara LazyColumn dan Column adalah bahwa Column harus digunakan saat Anda memiliki sedikit item untuk ditampilkan, karena Compose memuat semuanya sekaligus. Column hanya dapat menyimpan composable dengan jumlah yang tetap atau telah ditentukan. LazyColumn dapat menambahkan konten on demand, yang menjadikannya cocok untuk daftar panjang, terutama jika panjang daftar tidak diketahui. LazyColumn juga menyediakan scroll secara default, tanpa kode tambahan. Deklarasikan composable LazyColumn di dalam fungsi AffirmationList. Composable private fun AffirmationListaffirmationList List, modifier Modifier = Modifier { LazyColumn { } } Dalam isi lambda LazyColumn, panggil metode items dan teruskan affirmationList. Metode items adalah cara Anda menambahkan item ke LazyColumn. Metode ini agak unik untuk composable ini, dan bukan praktik umum untuk sebagian besar composable. Composable private fun AffirmationListaffirmationList List, modifier Modifier = Modifier { LazyColumn { itemsaffirmationList{ } } } Panggilan ke metode items memerlukan fungsi lambda. Dalam fungsi tersebut, tetapkan parameter affirmation yang mewakili satu item afirmasi dari affirmationList. Composable private fun AffirmationListaffirmationList List, modifier Modifier = Modifier { LazyColumn { itemsaffirmationList{ affirmation -> } } } Untuk setiap afirmasi dalam daftar, panggil composable AffirmationCard, dan teruskan affirmation. Composable private fun AffirmationListaffirmationList List, modifier Modifier = Modifier { LazyColumn { itemsaffirmationList{ affirmation -> AffirmationCardaffirmation } } } Menampilkan daftar Di lambda, panggil composable AffirmationList, lalu teruskan DataSource.loadAffirmations ke parameter affirmationList. Composable fun AffirmationApp { AffirmationsTheme { AffirmationListaffirmationList = Datasource.loadAffirmations } } Jalankan aplikasi Affirmations di perangkat atau emulator dan lihat produk yang sudah selesai. 5. Mendapatkan kode solusi Untuk mendownload kode codelab yang sudah selesai, Anda dapat menggunakan perintah git berikut $ git clone $ cd basic-android-kotlin-compose-training-affirmations $ git checkout main Atau, Anda dapat mendownload repositori sebagai file ZIP, lalu mengekstraknya, dan membukanya di Android Studio. Jika Anda ingin melihat kode solusi, lihat di GitHub. 6. Kesimpulan Anda sekarang tahu cara membuat kartu, item daftar, dan daftar yang dapat di-scroll menggunakan Jetpack Compose. Ingatlah bahwa ini hanyalah alat dasar untuk membuat daftar. Anda dapat menyalurkan kreativitas dan menyesuaikan item daftar sesuka hati. Ringkasan Gunakan composable Card untuk membuat item daftar. Ubah UI yang ada dalam composable Card. Buat daftar yang dapat di-scroll menggunakan composable LazyColumn. Buat daftar menggunakan item daftar kustom. Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.