2017-06-15 44 views

回答

0

第一:你試圖做什麼的問題。

當你看到這

無法在密封的情況下執行此操作。

此消息是Android告訴你所設置的信息已設置。你能說出一個不可滾動的視圖是否合理?沒有。您不能強制視圖滾動。可滾動的視圖取決於視圖。例如,一個可滾動的Button是沒有意義的!無障礙服務不能強制這種行爲。

應用程序的根節點很可能是某種類型的框架佈局,並且永遠不可滾動。層級的可滾動部分幾乎總是主佈局/根視圖的子元素。道德的故事,你不能說一個視圖是可滾動的,你必須找到一個可滾動的視圖。

這就是說,我會給你一個更好的解決方案,希望它在你支持的設備範圍內。

@TargetApi(Build.VERSION_CODES.M) 
public boolean scrollTo(AccessibilityNodeInfo nodeInfo) { 

    return nodeInfo.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SHOW_ON_SCREEN.getId()); 

} 

如果需要支持版本befor版本的Android M,你需要做的就是探索AccessibilityNodeInfo層次的佈局,其中,這是真正的內部觀點是什麼,這看起來大概像這樣(沒有測試,但應該非常接近!):

public boolean scrollView(AccessibilityNodeInfo nodeInfo) { 

    if (nodeInfo == null) return false; 

    if (nodeInfo.isScrollable()) { 
     return nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); 
    } 

    for (int i = 0; i < nodeInfo.getChildCount(); i++) { 
     if (scrollView(nodeInfo.getChild(i)) { 
      return true; 
     } 
    } 

    return false; 
} 
+0

請檢查我的問題,我編輯。 不,我不想支持Android M我想在Android-O –

+0

上執行此操作。但是,當滾動向左和向右滾動時,有四個選項可以向左和向右滾動,但是我想執行並且我該怎麼做呢? 否則在兩個選項中它很好用。 –

+0

更好的解決方案也適用於Android O. @TargetApi是一個「最小值」,並非確切的。嘗試這種方法。 – ChrisCM

相關問題