如何禁用ViewPager2中的滑动?

时间:2019-03-04 07:57:24

标签: android androidx android-viewpager2

是否可以在新的Android viewpager2组件中启用禁用滑动功能?

4 个答案:

答案 0 :(得分:3)

现在可以使用from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import pandas as pd url = 'http://biggestbook.com/ui/catalog.html#/itemDetail?itemId=HERY4832YER01&uom=CT' driver = webdriver.Chrome() driver.get(url) expandSigns = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".glyphicon-plus"))) expandSigns[1].click() WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "td"))) table = driver.find_element_by_css_selector('table') html = table.get_attribute('outerHTML') df = pd.read_html(html) print(df) driver.quit() 启用禁用滑动viewpager2

使用 Version 1.0.0-alpha02

  

Version 1.0.0-alpha02

新功能

  • 能够禁用用户输入(implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'setUserInputEnabled

API更改

  • isUserInputEnabled班级决赛

错误修复

  • ViewPager2稳定性修复

示例代码以禁止在viewpager2中滑动

FragmentStateAdapter

示例代码以启用在viewpager2中滑动

myViewPager2.setUserInputEnabled(false);

答案 1 :(得分:2)

如果您使用的是 Android 数据绑定,您可以简单地将其禁用您的布局 xml 文件。

app:userInputEnabled="@{false}"

答案 2 :(得分:1)

内幕ViewPager2RecyclerView配合使用来放大片段视图,但是RecyclerView是隐藏的,因此它们使它更加白痴。

 val rv : RecyclerView = viewPager.getChildAt(0) as RecyclerView
 rv.layoutManager = NonScrollingLayoutManager( rv.context, rv.layoutManager as LinearLayoutManager)

很麻烦的方法是通过包装布局管理器来使子级位于RecyclerView的零位置,并禁止在布局管理器中滚动:

inner class NonScrollingLayoutManager(context: Context, val layoutManager: LinearLayoutManager) :
    LinearLayoutManager(context, layoutManager.orientation, layoutManager.reverseLayout) {

    override fun canScrollVertically(): Boolean  = layoutManager.orientation == HORIZONTAL


    override fun canScrollHorizontally(): Boolean  =  layoutManager.orientation == VERTICAL

}

请注意,如果API更改了用于RecyclerView的布局管理器,即它们离开了LinearLayoutManager,将无法正常工作,并且需要重写某些方法并确保调用了超级方法。

第二种方法是ViewPager2的子类,ViewGroupRecyclerView的子类,然后在将触摸事件分派给子视图之前进行了神奇的拦截(如您所猜测的{{1}})并注意不要阻止点击。

答案 3 :(得分:0)

viewPager2.setUserInputEnabled(false);