android 如何禁止scrollview 滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 如何禁止scrollview 滚动相关的知识,希望对你有一定的参考价值。

参考技术A android scrollview组件禁止滑动的方法;
xml配置:
android:id="@+id/sc_freement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/category_line"
android:scrollbars="none"
android:fadingEdge="none">
</<span style="line-height: 21px; ">ScrollView>
java代码控制:
ScrollView scrollView = (ScrollView)this.findViewById(R.id.sc_freement);
scrollView.setOnTouchListener(new View.OnTouchListener()
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
return true;

);
参考技术B 换成linearlayout 参考技术C 请问您到底什么意思 如果不想滚动 为什么还要用scrollview呢?

当scrollview快速滚动时如何滚动collectionView?

【中文标题】当scrollview快速滚动时如何滚动collectionView?【英文标题】:How can I scroll collectionView when scrollview scrolls in swift? 【发布时间】:2018-06-25 13:07:39 【问题描述】:

我有 Scrollview 和 Collectionview,它们都是水平滚动的

scrollview 有页面,我想要在 scrollview 滚动时,也滚动 collectionview 并选择与 scrollview 页面索引相同的索引 collectionview 单元格

这里的问题是,在滚动视图滚动后,集合视图也会滚动,它会选择与滚动视图页面索引相同的单元格,但在此之后集合视图不会自行滚动。

抱歉,问题的格式可能不好,我是新来的

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "mycell", for: indexPath) as! MenuListCollectionViewCell
    cell.commoninit(name: ListOfMenu[indexPath.row])

   let IndexForCol = (scrollview.contentOffset.x / scrollview.frame.size.width).rounded()

    if selectedIndex == Int(indexPath.row)
    

        cell.backgroundColor = UIColor(hue: 0.6167, saturation: 1, brightness: 0.97, alpha: 1.0)
        cell.layer.cornerRadius = 14

    
    if indexPath.row == Int(IndexForCol) 
        cell.backgroundColor = UIColor(hue: 0.6167, saturation: 1, brightness: 0.97, alpha: 1.0)

    
    else
    
        cell.backgroundColor = UIColor.clear
    

    return cell




func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)    
 selectedIndex = indexPath.row
    UIView.animate(withDuration: 0.5, animations: 
        self.scrollview.contentOffset.x = self.scrollview.frame.width*CGFloat(indexPath.row)
    )






func scrollViewDidScroll(_ scrollView: UIScrollView) 
  let indexOfPage = round(scrollview.contentOffset.x / scrollview.frame.size.width)
  UIView.animate(withDuration: 0.5, animations: 
       self.collectionview.scrollToItem(at:IndexPath(item: Int(indexOfPage), section: 0), at: .right, animated: false)
  )
 collectionview.reloadData()


模拟器图片:

【问题讨论】:

【参考方案1】:

scrollViewDidScroll 被collectionView 和scrollView 调用,然后给scrollView 一个标签

//

func scrollViewDidScroll(_ scrollView: UIScrollView) 

  if scrollView.tag == 2  // scrollView scrolled 
      use collectionView's scrollToItem
  
  else                     // collectionView scrolled 
       set contentOffset to the scrollView
  


【讨论】:

以上是关于android 如何禁止scrollview 滚动的主要内容,如果未能解决你的问题,请参考以下文章

关于禁止Android scrollView 因内容变化而自动滚动

android 怎么让scrollview不能滑动

如何禁止recyclerview的滚动时间

如何设置scrollView 横向滚动

如何设置scrollview的滚动区域在本身的上方

同步 ScrollView 滚动位置 - android