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

暴利产品竞价单页网站网站推广目标什么意思

暴利产品竞价单页网站,网站推广目标什么意思,企业网络营销策划书模板,vue做的网站大全一、简述滑动冲突问题 在 Android 开发中,RecyclerView 和其子控件之间的滑动冲突是一个常见的问题。这种冲突通常发生在 RecyclerView 的子项本身也支持滑动操作时,例如子项是一个 ProgressBar、WebView 或其他自定义的滑动视图。当用户在子控件上滑动…

一、简述滑动冲突问题

在 Android 开发中,RecyclerView 和其子控件之间的滑动冲突是一个常见的问题。这种冲突通常发生在 RecyclerView 的子项本身也支持滑动操作时,例如子项是一个 ProgressBar、WebView 或其他自定义的滑动视图。当用户在子控件上滑动时,可能会触发 RecyclerView 的滑动,从而导致子控件滑动异常。

二、解决方案

  • requestDisallowInterceptTouchEvent 是 Android 中一个非常重要的方法,用于解决嵌套滑动(Nested Scrolling)或滑动冲突问题。它允许子视图(如 ScrollView、WebView 等)告诉父视图(如 RecyclerView、ViewPager 等)不要拦截当前的触摸事件,从而确保子视图能够正确处理这些事件。
  • 当调用 requestDisallowInterceptTouchEvent(true) 时,父视图的 onInterceptTouchEvent 方法将不会拦截当前的触摸事件。这意味着触摸事件会直接传递给子视图,而不是被父视图处理。

三、示例(RecyclerView 和 子控件 ProgressBar)

假设你有一个 RecyclerView,其中的每个子项包含一个可滑动的 ProgressBar 横向进度条。如果没有调用 requestDisallowInterceptTouchEvent(true),当用户在 ProgressBar 上滑动时,RecyclerView 可能会拦截这些事件,导致 ProgressBar 无法正常滑动。通过在 ProgressBar 的 onTouchEvent 中调用 requestDisallowInterceptTouchEvent(true),可以确保 ProgressBar 能够正常处理滑动事件。

1、子项布局文件 item_recycleview.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:padding="20dp"><ProgressBarandroid:id="@+id/progress_bar"android:layout_width="100dp"android:layout_height="match_parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"style="?android:attr/progressBarStyleHorizontal"android:max="100"android:progress="50"/></androidx.constraintlayout.widget.ConstraintLayout>

2、适配器类 CustomAdapter.kt

在子控件的 onTouchEvent 方法中根据触摸事件类型来调用 requestDisallowInterceptTouchEvent 方法:

  • 在触摸事件开始时(MotionEvent.ACTION_DOWN),调用 requestDisallowInterceptTouchEvent(true),通知父控件不要拦截事件。
  • 在触摸事件结束时( MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL),调用 requestDisallowInterceptTouchEvent(false),允许父控件重新拦截触摸事件。
package com.example.helloworldimport android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.ProgressBar
import androidx.recyclerview.widget.RecyclerViewclass CustomAdapter: RecyclerView.Adapter<CustomAdapter.ViewHolder>() {@SuppressLint("ClickableViewAccessibility")class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {private val progressBar: ProgressBar = itemView.findViewById(R.id.progress_bar)init {var lastX = 0fprogressBar.setOnTouchListener { view, motionEvent ->when (motionEvent.action) {MotionEvent.ACTION_DOWN -> {// 当触摸事件发生时,通知父视图不要拦截触摸事件progressBar.parent.requestDisallowInterceptTouchEvent(true)}MotionEvent.ACTION_UP -> {// 当触摸事件发生时,通知父视图可以拦截触摸事件progressBar.parent.requestDisallowInterceptTouchEvent(false)}MotionEvent.ACTION_MOVE -> {if (motionEvent.x > lastX) {progressBar.progress += 2} else {progressBar.progress -= 2}lastX = motionEvent.x}}true}}}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view = LayoutInflater.from(parent.context).inflate(R.layout.item_recycleview, parent, false)return ViewHolder(view)}override fun getItemCount(): Int {return 5}override fun onBindViewHolder(holder: ViewHolder, position: Int) {}
}

3、Activity 的布局文件 activity_scroll_conflict.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="300dp"android:layout_height="100dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="20dp"android:layout_marginStart="20dp"/></androidx.constraintlayout.widget.ConstraintLayout>

4、ScrollConflictActivity.kt 文件

package com.example.helloworldimport android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.helloworld.databinding.ActivityScrollConflictBindingclass ScrollConflictActivity: AppCompatActivity() {private lateinit var _binding: ActivityScrollConflictBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)_binding = ActivityScrollConflictBinding.inflate(layoutInflater)setContentView(_binding.root)_binding.recyclerView.adapter = CustomAdapter()_binding.recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)}
}

四、其他注意事项

  • 性能考虑:频繁调用 requestDisallowInterceptTouchEvent 可能会影响性能,尤其是在复杂的布局中,建议仅在必要时调用此方法。
  • 嵌套滚动支持:如果子控件支持嵌套滚动(如 NestedScrollView),可以使用 NestedScrollingParent 和 NestedScrollingChild 接口来实现更复杂的嵌套滚动逻辑。
http://www.dtcms.com/wzjs/600106.html

相关文章:

  • 无极网站无极城市在线大埔做网站
  • 白云地网站建设wordpress模板怎么改成织梦模板
  • 计算机网站开发要考什么证wordpress表格图表插件下载
  • 厚街响应式网站建设查企业的信息在哪个官网
  • wordpress网站好用吗重庆市建设工程信息网资质系统
  • seo品牌优化百度资源网站推广关键词排名福州网站模板建站
  • 荣耀手机商城官方网站登录入口微信小程序源代码
  • 怎么做属于自己的域名网站qq是哪个开发运营公司的
  • 视频点播网站建设网站效果
  • 泗水县建设局的网站怎么打开建筑企业资质查询官方网站
  • 深圳发型网站建设网站登录按钮怎么做
  • 用vue-cli做的网站快站登录
  • 一款可做引流的网站源码搜狗竞价推广
  • 注册公司查名字哪个网站二级域名如何绑定网站
  • 泉州做网站哪家好爱站网官网关键词查询
  • 国外购物网站赏析网站底部模板源码
  • 有哪些企业可以做招聘的网站有哪些内容wordpress集成环境搭建
  • 动易网站模版的制作做网站一定要域名吗
  • 个人网站开发的现状广州市地铁线路最新全图
  • 建个普通网站柳州企业网站开发公司
  • 大连城市建设网站营销网站开发选哪家
  • 海东市公司网站建设网站建设王滨1983
  • 网站平台怎么推广网站建设的中期报告
  • 苏州网站建设价格网站策划论坛
  • 网站seo优化很好徐州百度网络点赞搜索引擎优化包括哪些
  • 网站建设平台接单2015做导航网站
  • 网站开发经济可行性分析怎么写wordpress解压后怎么安装
  • 沧州公司做网站西部数码网站工具
  • 国外做美食的网站成立公司怎么做网站
  • 网站浏览路径怎么做徐州网站开发价位