如何解决如何在AndroidKotlin中实现CardView?
该想法是创建一次只显示一张卡片的cardview,但是在 Main.kt 文件中实现cardview时遇到了困难。
我从CardStackView https://github.com/yuyakaido/CardStackView/tree/master/sample中获取了sampleCode,并尝试使其适用于CardView,因为我只需要一张卡而不是堆栈。但是,该卡应该可以从CardStackView中滑动。因此, item_text_backside.xml 应该显示在 activity_main.xml 的卡片视图中。我猜适配器除了 Main.kt 文件之外的其他代码都很好。
平台: Android 语言:科特林
预先感谢和亲切问候。
代码如下:
Main.kt
private val cardViewBackside by lazy { findViewById<CardView>(R.id.card_view_backside)}
private val adapterBackside by lazy { CardAdapterBackside(createSpotsBackside()) }
private fun createSpotsBackside(): List<Spot> {
spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))
return spotsBackside
SpotBackside.kt
package com.example.anmeldenregistrieren
data class SpotBackside(val text: String) {}
CardAdapterBackside.kt
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class CardAdapterBackside(
private var spotsBackside: List<SpotBackside> = emptyList()
) : RecyclerView.Adapter<CardAdapterBackside.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
return ViewHolder(inflater.inflate(R.layout.item_text_backside,parent,false))
}
override fun onBindViewHolder(holder: ViewHolder,position: Int) {
val spotBackside = spotsBackside[position]
holder.textBackside.text = "${spotBackside.text}"
}
override fun getItemCount(): Int {
return spotsBackside.size
}
fun setSpotsBackside(spotsBackside: List<SpotBackside>) {
this.spotsBackside = spotsBackside
}
fun getSpotsBackside(): List<SpotBackside> {
return spotsBackside
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textBackside: TextView = view.findViewById(R.id.item_name_backside)
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/card_view_backside"
android:layout_width="731dp"
android:layout_height="280dp"
android:layout_above="@+id/button_container"
android:layout_below="@+id/close_btn"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginStart="-1dp"
android:layout_marginLeft="-1dp"
android:layout_marginTop="3dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="-2dp"
android:clipToPadding="false"
android:padding="4dp">
>
</androidx.cardview.widget.CardView>
</androidx.drawerlayout.widget.DrawerLayout>
item_text_backside.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:foreground="?attr/selectableItemBackground"
app:cardUseCompatPadding="true"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp"
app:cardBackgroundColor="@android:color/white">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/item_image_backside"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:riv_corner_radius="8dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:padding="16dp"
android:background="@drawable/gradation_black">
<TextView
android:id="@+id/item_name_backside"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textSize="26sp"
android:textStyle="bold"
android:text="abc"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。