From da453dbd3471d907b83dceedaafee5d8941e49fb Mon Sep 17 00:00:00 2001 From: "foreA.adoxid" Date: Mon, 12 May 2025 11:06:41 +0300 Subject: [PATCH 1/4] fix version again --- build.gradle.kts | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5d68f11..a7b2ae0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.9.2" apply false - id("com.android.library") version "8.9.2" apply false + id("com.android.application") version "8.10.0" apply false + id("com.android.library") version "8.10.0" apply false id("org.jetbrains.kotlin.android") version "2.1.20" apply false } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2c177a0..5cf5bcd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sun May 04 14:55:53 MSK 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 4e8ef6d8e8df27334b6c7353d7c3cb0fdebb140a Mon Sep 17 00:00:00 2001 From: praes666 Date: Tue, 13 May 2025 23:15:48 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=BD=D0=B0=D1=85=D1=83=D0=B5=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=82=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 15 +- .../projectfigma/Activity/AdvertisingPage.kt | 21 ++ app/src/main/res/drawable/bg_rating.xml | 4 +- .../main/res/drawable/bg_rating_orange.xml | 8 + .../main/res/drawable/bg_skibidi_tualet.xml | 4 + app/src/main/res/drawable/ic_discount_30.png | Bin 0 -> 3394 bytes .../main/res/drawable/ic_heart_unborder.png | Bin 0 -> 273 bytes app/src/main/res/drawable/ic_minus.png | Bin 0 -> 726 bytes app/src/main/res/drawable/ic_plus.png | Bin 0 -> 818 bytes .../res/layout/activity_advertising_page.xml | 228 ++++++++++++++++++ app/src/main/res/layout/item_food.xml | 10 +- 12 files changed, 279 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/example/projectfigma/Activity/AdvertisingPage.kt create mode 100644 app/src/main/res/drawable/bg_rating_orange.xml create mode 100644 app/src/main/res/drawable/bg_skibidi_tualet.xml create mode 100644 app/src/main/res/drawable/ic_discount_30.png create mode 100644 app/src/main/res/drawable/ic_heart_unborder.png create mode 100644 app/src/main/res/drawable/ic_minus.png create mode 100644 app/src/main/res/drawable/ic_plus.png create mode 100644 app/src/main/res/layout/activity_advertising_page.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3fe22b7..91853b6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { implementation("androidx.constraintlayout:constraintlayout:2.2.1") implementation("androidx.room:room-ktx:2.7.1") + implementation(libs.androidx.activity) kapt("androidx.room:room-compiler:2.7.1") testImplementation("junit:junit:4.13.2") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9ce032b..1aadf3d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Project" tools:targetApi="31"> + @@ -22,12 +25,12 @@ - - - - - - + + + + + + - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_rating_orange.xml b/app/src/main/res/drawable/bg_rating_orange.xml new file mode 100644 index 0000000..da9d1a2 --- /dev/null +++ b/app/src/main/res/drawable/bg_rating_orange.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/bg_skibidi_tualet.xml b/app/src/main/res/drawable/bg_skibidi_tualet.xml new file mode 100644 index 0000000..ee75929 --- /dev/null +++ b/app/src/main/res/drawable/bg_skibidi_tualet.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_discount_30.png b/app/src/main/res/drawable/ic_discount_30.png new file mode 100644 index 0000000000000000000000000000000000000000..4483ec2f45a92689029c96c1575b4bb2d4addf5d GIT binary patch literal 3394 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 Y2R?OgMEgh-jsO4v07*qoM6N<$f{HVv_y7O^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_heart_unborder.png b/app/src/main/res/drawable/ic_heart_unborder.png new file mode 100644 index 0000000000000000000000000000000000000000..b29230dafc65ea4abf9cd31086bfd18276a44f05 GIT binary patch literal 273 zcmV+s0q*{ZP)D$LFnc;T8n7+$y5CITAqbh){-2o=W_D21LbB~vZ})Au9(*7LdFd4_ zI4A46QIJz@I=~O@%vWI;VO9 Xk~aEeVFRFT00000NkvXXu0mjfkjrd3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_minus.png b/app/src/main/res/drawable/ic_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..23908c0d664c7d505b0507e4fd2f60fbb6eeae3d GIT binary patch literal 726 zcmV;{0xA88P)LxVb$9_JYAUmPh%`tPDN;t%NTf;^h13+GiJ&7j4S9p(1&~vmZf#$L z5k+#Hvvb%9nbFs>2`MJW_I@D*4BFU>eb5yg@Ly&`QUJ}%T8m?K1ag8 zi3JOv1D^r#ortry7TvD^-$twx~geket24 zerx4)w*Hc?l(jBot6-uI(b)fmg3~!R;3{xd#r`i;QpdrzMvTi54|E-40IlUgySHJ;7U&hI!}t@AnIDLvVkQBFS8%V`_@d4c8F~gwAUFG z*a#2OasU2x_UnF{&1SPoc)Y$KbLbfFXkv>A%`!vaV-C+ zOesE`oe;-t_&L5KbLh~PVk8D%@gNh@Pe<9qmk*UNeX~XE>(Dljj-2W-`gZ@{ZqRbr zy(3j(a->RCtv3B2YK!q}ahcB8Cfbfzs7vciU0J?i{}-xDO$%)`>*3~k#8(d9))fR%s z$)+2My49anT7HZ4w8u4YZ-dg)UHR(}Od6@P8ga;yc}1wQZzN00^elrRcG46G27aVg zGGwA;Z(}nSg8KBE73my1gtF0Qo)#or3(z~VP&X{L=^u> zTbH(!Z04R5SMhsJ?A#CAt^AcfOX}RcukYR6yKC0gTD5A`stIx}_Q10{JEKkWePEl1 zzGHk19Mhc#J_Fzx-!@-)7Tdt>G(un|u-WUtF$O&FScK3qBX|)bi&?n+$^~zFHXmjn@mGx{Fp(@#c|WEj6(zcmG19)Bj!$WVIIR-J~rjg?AAD01-^WzlU6 z&T-fW5u9kr7bU5{n2UW7`EaDiUz9|r6Pe>m{4Eebcd&x+&_yu!ND&_H~|1lHz-=72W%sjBz;P#6soMZQQxxb4Wv||jg z52E4LBjtA-x{dJ)zmI+7>aG>RrSCsPR>oy$H&(Q8q*6W4^cpKMzf!5b8qjI1bQ-2o zz3gA}`VdS(=_RsHEg&kLhN*O1zn$%GC&e=UT$HfP0W(iL9hHunQe^%?0dp<5k5}9v zudDtJL>A!`#0t9R0dBlDcnYp``&*<&n3I`T%T%j5U8YjauD@N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_food.xml b/app/src/main/res/layout/item_food.xml index 1053fe7..e5ea760 100644 --- a/app/src/main/res/layout/item_food.xml +++ b/app/src/main/res/layout/item_food.xml @@ -34,10 +34,6 @@ app:layout_constraintStart_toStartOf="parent" android:layout_margin="8dp"> - + + + From 9f35fa1008368db29df649f23f09a051fa5a8e74 Mon Sep 17 00:00:00 2001 From: praes666 Date: Wed, 14 May 2025 21:19:21 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D1=82=D0=BE=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=85=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/ic_add_to_card.png | Bin 0 -> 3618 bytes .../main/res/drawable/ic_heart_in_circle.png | Bin 0 -> 806 bytes .../res/layout/activity_advertising_page.xml | 256 +++++++++++++++++- 3 files changed, 251 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_add_to_card.png create mode 100644 app/src/main/res/drawable/ic_heart_in_circle.png diff --git a/app/src/main/res/drawable/ic_add_to_card.png b/app/src/main/res/drawable/ic_add_to_card.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cd87eca1096f1a3c9a61db933335bd72fab7b0 GIT binary patch literal 3618 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_heart_in_circle.png b/app/src/main/res/drawable/ic_heart_in_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..49217e64cb566c1f8670610656c364b3bb0b299a GIT binary patch literal 806 zcmV+>1KIqEP)1gh5XbKkc!cwX9v%Rs)KuXd1PvVsYS&1lN(CZmlOkzC%DAC`288I%3m_vAarQaf z+968ZE&E^RY-e`wydQVA80n{2+1;7HW_R}Eg22(b8{w^FBV7OeFxu%gqmzC!>ZZ+z ziN737em6S3X5(`bM_cGiebj2XxOq{g$T4wrAbf<>Z)FC7$PNweip+GCf-%Ku9KNH0 zssg?dgT}S8 zQTJCXa)MX}r3F@Jb=v|hRG+l#DOU!pl4MhJnxz$P=2d}1;f6@tY^G1|@NBomM<;vy z{Nphn9=+v*7x$EYXRQaE?Qh9G=$q}dls=2Nk=3NxIHVnlK=8|7Klpe&Ru~?=nf4pC z_mp;kvG76t7SR*;im6c3Jrh~G$_7gCdCor_OX&aSxyn)-u}tm&xNK+|wG?I2g^SKt z#eWfU`f*pJ4LZ(VJywGG@<;fjadgP(H?4LQ3=QN9+kdUZ(IKk84WS*{pra0<@JZun ziKDJ@Az_=LfqXH|sDK5Ue`>*cqJey|sC;fL6rfURFjxM5`=IzQ!+7e!;N^XOdFsDK z!3TU%|0S?MJavC+8Vd0h>mZWj*)4>wwbh1l5NOc}rNd36*zn`EF99}F+F$|-!A30l z+7!<`IFte$Pqe`lQ?WiGL9%&!Jz#jZTND%}+kUPHqh#C9lyMfY>FvpN`g54Ln^JK( zXrujYNaN^WD%5BCb97>d<|j`f%8S(Wa#F_V{p>z~-?ZHpS?$!S$SQ!qDntS$o4JXi z@>;7^A`YV26NDOefd2pR0Rn~>sn2%hjm?+6RedBwOvI*oN(}@0OI!v{B6C~Xmpz;5 zF0$(*wzk~>)xEHAYz*1$i4B+ras|HRWuq>eEQiLSOR-@L?iIBP)ENTet|&7dN8jhg kOHtzWfQxx9&S#4M0cJPCz~D-g{{R3007*qoM6N<$f*5; + + + + + + + + + @@ -220,9 +260,215 @@ + android:textSize="16dp" + android:textStyle="bold" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.099" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/dividingLine2" + app:layout_constraintVertical_bias="0.0" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8e526934bd8345968092efca360799c1abcff28d Mon Sep 17 00:00:00 2001 From: Egorick <112876399+Vooidss@users.noreply.github.com> Date: Thu, 15 May 2025 14:37:56 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=BD=D0=BD=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../Activity/AdverstsingPageActivity.kt | 25 ++ .../projectfigma/Adapters/PromoAdapter.kt | 7 +- .../projectfigma/Fragments/BannerFood.kt | 56 +++-- .../res/layout/activity_advertising_page.xml | 229 +++++++----------- app/src/main/res/layout/item_banner.xml | 1 + build.gradle.kts | 4 +- 7 files changed, 160 insertions(+), 163 deletions(-) create mode 100644 app/src/main/java/com/example/projectfigma/Activity/AdverstsingPageActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1aadf3d..6b04610 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,6 +31,7 @@ + ) : +class PromoAdapter( + private var items: List, + private val onBannerClick: () -> Unit) : RecyclerView.Adapter() { inner class VH(view: View) : RecyclerView.ViewHolder(view) { private val image: ImageView = view.findViewById(R.id.promo_image) private val title: TextView = view.findViewById(R.id.title) private val discount: TextView = view.findViewById(R.id.discount) + private val fullCard: CardView = view.findViewById(R.id.fullCard) fun bind(item: Dishes) { title.text = "Experience our delicious new dish" discount.text = "${30}% OFF" + fullCard.setOnClickListener { onBannerClick() } } } diff --git a/app/src/main/java/com/example/projectfigma/Fragments/BannerFood.kt b/app/src/main/java/com/example/projectfigma/Fragments/BannerFood.kt index 56d489c..54f85e8 100644 --- a/app/src/main/java/com/example/projectfigma/Fragments/BannerFood.kt +++ b/app/src/main/java/com/example/projectfigma/Fragments/BannerFood.kt @@ -1,5 +1,6 @@ package com.example.projectfigma.Fragments +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper @@ -7,7 +8,10 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import androidx.viewpager2.widget.ViewPager2 +import com.example.projectfigma.Activity.AdverstsingPageActivity +import com.example.projectfigma.Activity.LogActivity import com.example.projectfigma.Adapters.PromoAdapter import com.example.projectfigma.DataBase.DataBase import com.example.projectfigma.R @@ -15,71 +19,73 @@ import com.example.projectfigma.databinding.FragmentBannerFoodBinding import com.example.projectfigma.databinding.FragmentBestSellerBinding import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class BannerFood : Fragment() { private var _binding: FragmentBannerFoodBinding? = null private val binding get() = _binding!! private lateinit var promoAdapter: PromoAdapter - - override fun onCreate(savedInstanceState: Bundle?) { - - super.onCreate(savedInstanceState) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentBannerFoodBinding.inflate(inflater, container, false) + return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // 1) Инициализируем адаптер - promoAdapter = PromoAdapter(emptyList()) + promoAdapter = PromoAdapter(emptyList()) { + val intent = Intent(requireContext(), AdverstsingPageActivity::class.java) + startActivity(intent) + requireActivity().finish() + } binding.viewPager.adapter = promoAdapter // 2) Настраиваем TabLayoutMediator, сразу задаём иконки TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, _ -> - tab.setIcon(R.drawable.tab_indicator_unselected) + tab.setIcon(com.example.projectfigma.R.drawable.tab_indicator_unselected) }.attach() - // 3) Подписываемся на смену вкладки, чтобы менять иконки + // 3) Слушаем смену вкладки для изменения иконки binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { - tab.setIcon(R.drawable.tab_indicator_selected) + tab.setIcon(com.example.projectfigma.R.drawable.tab_indicator_selected) } override fun onTabUnselected(tab: TabLayout.Tab) { - tab.setIcon(R.drawable.tab_indicator_unselected) + tab.setIcon(com.example.projectfigma.R.drawable.tab_indicator_unselected) } override fun onTabReselected(tab: TabLayout.Tab) {} }) - // 4) Тут же можете запустить автопрокрутку, если она нужна в фрагменте - val handler = Handler(Looper.getMainLooper()) - handler.postDelayed(object : Runnable { - override fun run() { + // 4) Автопрокрутка с помощью корутины + viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) { + while (isActive) { + delay(4000) if (promoAdapter.itemCount > 1) { val next = (binding.viewPager.currentItem + 1) % promoAdapter.itemCount binding.viewPager.setCurrentItem(next, true) } - handler.postDelayed(this, 4000) } - }, 4000) + } - // 5) А обновление списка (LiveData) можно тоже повесить здесь: + // 5) Обновление списка из БД val dao = DataBase.getDb(requireContext()).getDishesDao() dao.getBestSellers().observe(viewLifecycleOwner) { list -> promoAdapter.updateList(list) } } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - _binding = FragmentBannerFoodBinding.inflate(inflater, container, false) - return binding.root - } - override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/res/layout/activity_advertising_page.xml b/app/src/main/res/layout/activity_advertising_page.xml index fcf0c10..01f1994 100644 --- a/app/src/main/res/layout/activity_advertising_page.xml +++ b/app/src/main/res/layout/activity_advertising_page.xml @@ -1,23 +1,24 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/background"> + + app:layout_constraintTop_toBottomOf="@+id/constraintLayoutFamiliar"> + app:layout_constraintBottom_toBottomOf="@+id/tvJumboTitle" + app:layout_constraintStart_toEndOf="@+id/tvJumboTitle" + app:layout_constraintTop_toTopOf="@+id/tvJumboTitle" /> + app:layout_constraintStart_toEndOf="@+id/tvJumboSeparator" + app:layout_constraintTop_toTopOf="@+id/tvJumboSeparator" /> + - + + app:layout_constraintTop_toBottomOf="@+id/constraintLayoutHeader"> - - + + + android:textSize="25dp" /> - - + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.346"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + app:layout_constraintStart_toEndOf="@id/tvFamiliarTitle" + app:layout_constraintTop_toTopOf="@id/tvFamiliarTitle" + app:layout_constraintBottom_toBottomOf="@id/tvFamiliarTitle"/> + app:layout_constraintStart_toEndOf="@id/tvFamiliarSeparator" + app:layout_constraintTop_toTopOf="@id/tvFamiliarSeparator" + app:layout_constraintBottom_toBottomOf="@id/tvFamiliarSeparator" + app:layout_constraintEnd_toEndOf="parent"/> + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.336"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + app:layout_constraintStart_toEndOf="@id/tvPersonalTitle" + app:layout_constraintTop_toTopOf="@id/tvPersonalTitle" + app:layout_constraintBottom_toBottomOf="@id/tvPersonalTitle"/> + app:layout_constraintStart_toEndOf="@id/tvPersonalSeparator" + app:layout_constraintTop_toTopOf="@id/tvPersonalSeparator" + app:layout_constraintBottom_toBottomOf="@id/tvPersonalSeparator" + app:layout_constraintEnd_toEndOf="parent"/> + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.323"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + app:layout_constraintStart_toEndOf="@id/tvMediumTitle" + app:layout_constraintTop_toTopOf="@id/tvMediumTitle" + app:layout_constraintBottom_toBottomOf="@id/tvMediumTitle"/> + app:layout_constraintStart_toEndOf="@id/tvMediumSeparator" + app:layout_constraintTop_toTopOf="@id/tvMediumSeparator" + app:layout_constraintBottom_toBottomOf="@id/tvMediumSeparator" + app:layout_constraintEnd_toEndOf="parent"/> - - - - - - - - - - + - \ No newline at end of file + diff --git a/app/src/main/res/layout/item_banner.xml b/app/src/main/res/layout/item_banner.xml index 2cd74b0..ed9debb 100644 --- a/app/src/main/res/layout/item_banner.xml +++ b/app/src/main/res/layout/item_banner.xml @@ -1,5 +1,6 @@