是否可以在新的Android viewpager2
组件中启用禁用滑动功能?
答案 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
新功能
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)
内幕ViewPager2
与RecyclerView
配合使用来放大片段视图,但是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
的子类,ViewGroup
是RecyclerView
的子类,然后在将触摸事件分派给子视图之前进行了神奇的拦截(如您所猜测的{{1}})并注意不要阻止点击。
答案 3 :(得分:0)
viewPager2.setUserInputEnabled(false);