当前位置: 首页 > wzjs >正文

南宁上林网站建设成立网站的意义

南宁上林网站建设,成立网站的意义,ios wordpress发文章,网站建设万禾本文将详细介绍如何使用DialogX库实现一个iOS风格的底部弹窗,包含图标、文本和Toggle开关的列表项。 实现步骤 1. 添加依赖 在build.gradle文件中添加: implementation com.github.kongzue.DialogX:DialogX:0.0.49.beta14 implementation com.github.ko…

本文将详细介绍如何使用DialogX库实现一个iOS风格的底部弹窗,包含图标文本Toggle开关的列表项。
实现步骤
1. 添加依赖
build.gradle文件中添加:

implementation 'com.github.kongzue.DialogX:DialogX:0.0.49.beta14'
implementation 'com.github.kongzue.DialogX:DialogXIOSStyle:0.0.49.beta14'
implementation 'androidx.recyclerview:recyclerview:1.3.2'

2. 创建布局文件
底部弹窗主布局 (dialog_bottom_toggle.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:background="@drawable/bg_bottom_dialog_round_top"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"android:textSize="18sp"android:textStyle="bold"/><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="wrap_content"android:maxHeight="400dp"/><Buttonandroid:id="@+id/btn_cancel"android:layout_width="match_parent"android:layout_height="48dp"android:text="取消"android:background="?attr/selectableItemBackground"/>
</LinearLayout>

列表项布局 (item_toggle.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="56dp"android:orientation="horizontal"android:paddingStart="24dp"android:paddingEnd="16dp"android:gravity="center_vertical"><ImageViewandroid:id="@+id/iv_icon"android:layout_width="24dp"android:layout_height="24dp"android:layout_marginEnd="16dp"/><TextViewandroid:id="@+id/tv_title"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textSize="16sp"/><androidx.appcompat.widget.SwitchCompatandroid:id="@+id/switch_toggle"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

3. 实现工具类

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.widget.SwitchCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.kongzue.dialogx.dialogs.CustomDialog
import com.kongzue.dialogx.interfaces.OnBindView
import com.kongzue.dialogx.style.IOSStyle
import smartconnection.com.smartconnect.Robject BottomToggleDialog {data class ToggleItem(val iconRes: Int,val title: String,var isChecked: Boolean = false,val onToggleChanged: ((Boolean) -> Unit)? = null)/*** 使用CustomDialog的可靠实现*/fun show(context: Context,title: String? = null,items: List<ToggleItem>) {CustomDialog.build().setCustomView(object : OnBindView<CustomDialog>(R.layout.dialog_bottom_toggle) {override fun onBind(dialog: CustomDialog?, view: View?) {view?.apply {// 绑定视图val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)val tvTitle = findViewById<TextView>(R.id.tv_title)val btnCancel = findViewById<Button>(R.id.btn_cancel)// 设置标题title?.let { tvTitle.text = it } ?: run { tvTitle.visibility = View.GONE }// 配置列表recyclerView.layoutManager = LinearLayoutManager(context)recyclerView.adapter = ToggleAdapter(items).apply {onItemClick = { position, isChecked ->items[position].isChecked = isCheckeditems[position].onToggleChanged?.invoke(isChecked)}}// 取消按钮btnCancel.setOnClickListener { dialog?.dismiss() }}}}).setStyle(IOSStyle.style()).setAlign(CustomDialog.ALIGN.BOTTOM).setCancelable(true).show()}private class ToggleAdapter(private val items: List<ToggleItem>) :RecyclerView.Adapter<ToggleAdapter.ViewHolder>() {var onItemClick: ((Int, Boolean) -> Unit)? = nullclass ViewHolder(view: View) : RecyclerView.ViewHolder(view) {val ivIcon: ImageView = view.findViewById(R.id.iv_icon)val tvTitle: TextView = view.findViewById(R.id.tv_title)val switch: SwitchCompat = view.findViewById(R.id.switch_toggle)}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view = LayoutInflater.from(parent.context).inflate(R.layout.item_toggle, parent, false)return ViewHolder(view)}override fun onBindViewHolder(holder: ViewHolder, position: Int) {val item = items[position]holder.ivIcon.setImageResource(item.iconRes)holder.tvTitle.text = item.titleholder.switch.isChecked = item.isCheckedholder.switch.setOnCheckedChangeListener { _, isChecked ->onItemClick?.invoke(position, isChecked)}holder.itemView.setOnClickListener {holder.switch.toggle()}}override fun getItemCount() = items.size}
}

使用示例

// 准备数据
val items = listOf(BottomToggleDialog.ToggleItem(iconRes = R.drawable.ic_notification,title = "消息通知",isChecked = true) { isChecked ->Toast.makeText(this, "通知状态: $isChecked", Toast.LENGTH_SHORT).show()},BottomToggleDialog.ToggleItem(iconRes = R.drawable.ic_dark_mode,title = "暗黑模式",isChecked = false) { isChecked ->Toast.makeText(this, "暗黑模式: $isChecked", Toast.LENGTH_SHORT).show()}
)// 显示弹窗
BottomToggleDialog.show(context = this,title = "功能设置",items = items
)

关键点说明
1.底部显示控制:

setAlignBottom() 确保内容对齐底部

自定义动画实现滑动效果

顶部圆角背景优化视觉效果

2.数据绑定:

使用RecyclerView实现高效列表

通过回调处理Toggle状态变化


文章转载自:

http://CtVXF0w1.wsjnr.cn
http://qCXoofkb.wsjnr.cn
http://VhFdVt7B.wsjnr.cn
http://R6olJoWh.wsjnr.cn
http://xYAfTnw6.wsjnr.cn
http://7r5s6ucr.wsjnr.cn
http://FrByir5n.wsjnr.cn
http://qr6Nod9D.wsjnr.cn
http://PgSLtaAQ.wsjnr.cn
http://35uwF3Gl.wsjnr.cn
http://OfhzqeoP.wsjnr.cn
http://8J2Ykp6V.wsjnr.cn
http://7vAsHfeZ.wsjnr.cn
http://IkRMS5Mj.wsjnr.cn
http://wzZIuHJd.wsjnr.cn
http://9gn7drTB.wsjnr.cn
http://xKnmUiMA.wsjnr.cn
http://StAePtbE.wsjnr.cn
http://EtSZ3RWa.wsjnr.cn
http://bGmVd4ID.wsjnr.cn
http://aYuDykIB.wsjnr.cn
http://JH21mCqK.wsjnr.cn
http://jVPutKn0.wsjnr.cn
http://mDw1ALjX.wsjnr.cn
http://JtC0gLS9.wsjnr.cn
http://YttHnjaY.wsjnr.cn
http://v9u9eAaa.wsjnr.cn
http://IYKKDsVj.wsjnr.cn
http://ErQFCbkX.wsjnr.cn
http://iGAS4wHD.wsjnr.cn
http://www.dtcms.com/wzjs/751194.html

相关文章:

  • 天津高端网站建设案例wordpress+微官网主题
  • 建设部网站阮建昌公示昆明专业网站建设的公司
  • 加强档案网站建设教育响应式网站建设
  • 网站在只有域名了南方数据企业网站管理系统9
  • 临沂网站建设熊掌号网站建设与维护的试题卷判断题
  • 电子商务网站的推广方法自己搭建云游戏服务器
  • 直播做ppt的网站有哪些wordpress预订插件
  • 南京市住房建设网站建筑设计师网站
  • 网站关键词优化到首页难度建筑方案设计深度要求
  • 遵义住房和城乡建设厅网站电子商城网站开发需求分析模板
  • 美食网站 怎么做网站热力图用ps怎么做
  • wordpress建站好用吗昌平装修公司哪家好
  • wordpress重置密码关键词优化价格
  • 网站建设需要注意什么哪些建设私人网站
  • 洒长春菩网站建设网络搭建案例
  • 做网站开发的需求文档大型购物网站排名
  • 长沙手机网站首页设计公司wordpress 显示文章摘要
  • 深圳网站建设 网络推广佛山行业网站建设
  • 范县网站建设网站在布局
  • 徐州网站建设模板营销型网站开发
  • 怎么去找做网站的全国加盟网站大全
  • html5手机网站调用微信分享wordpress 客户端源码
  • 怎样把自己做的网站上传到网上建设银行网上营业厅
  • 网站做推广页需要什么网站运营团队建设
  • 网站做填充莆田seo接单
  • wordpress站外链接跳转页面上海市建筑业官网
  • 网站维护推广无锡公司建立网站
  • 怎么做一键添加信任网站唐山网站建设|唐山网站制作|公司建站666起|唐山红城网络
  • 荆州网站建设 松滋网站建设一个提高网站流量的常用方法
  • 网站后来功能自己怎么做单页网站