91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何控制和禁止ScrollView自動滑動到底部

發布時間:2022-04-11 15:56:01 來源:億速云 閱讀:926 作者:iii 欄目:編程語言

本篇內容介紹了“Android中如何控制和禁止ScrollView自動滑動到底部”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、Android 控制ScrollView滾動到底部

這里有兩種辦法,第一種,使用scrollTo():

public static void scrollToBottom(final View scroll, final View inner) { 
 
Handler mHandler = new Handler(); 
 
mHandler.post(new Runnable() { 
public void run() { 
if (scroll == null || inner == null) { 
return; 
} 
int offset = inner.getMeasuredHeight() - scroll.getHeight(); 
if (offset < 0) { 
offset = 0; 
} 
 
scroll.scrollTo(0, offset); 
} 
}); 
}

第一種實現相對比較麻煩,更推薦使用第二種方式,使用fullScrol()

下面我們看一下這個函數:

  • scrollView.fullScroll(ScrollView.FOCUS_DOWN);滾動到底部

  • scrollView.fullScroll(ScrollView.FOCUS_UP);滾動到頂部

需要注意的是:該方法不能直接被調用

因為Android很多函數都是基于消息隊列來同步,所以需要一部操作,addView完之后,不等于馬上就會顯示,而是在隊列中等待處理,雖然很快,但是如果立即調用fullScroll, view可能還沒有顯示出來,所以會失敗

應該通過handler在新線程中更新

handler.post(new Runnable() { 
 @Override 
 public void run() { 
  scrollView.fullScroll(ScrollView.FOCUS_DOWN); 
 } 
});

二、禁止ScrollView自動滑動到底部

但有的時候能我們又需要禁止ScrollView自動滑動到底部,以下是解決方法:

具體表現

ScrollView 嵌套 GridView 、ListView等類似的控件時,當從網絡上獲取數據時刷新界面,此事發生的情況是: ScrollView 自動滑到屏幕的最低端,具體來說時滑動展示數據最后一條的位置,如果此時進行下拉刷新,也會出現布局顯示不合理的狀況。

為何如此

childView 有獲取焦點的能力

由于該 childView 超過屏幕大小,并且有獲取焦點的能力,所以造成了該問題。由于不能改變其大小,只能阻止其獲取焦點。基本思路有,取消它獲取焦點的能力,讓ScrovView截獲它的焦點等。

如何解決

讓 childView 的焦點被截獲

具體方案

ScrollView 下的 LinearLayout 中加了android:descendantFocusability="blocksDescendants"

“Android中如何控制和禁止ScrollView自動滑動到底部”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

多伦县| 定边县| 织金县| 启东市| 泌阳县| 丰台区| 蒲江县| 黄山市| 定西市| 慈利县| 洛川县| 宜州市| 彭阳县| 宣武区| 容城县| 承德县| 开原市| 盘山县| 右玉县| 广灵县| 蓝田县| 将乐县| 宿州市| 彩票| 攀枝花市| 新竹县| 拜城县| 临湘市| 磴口县| 阳谷县| 绥德县| 延边| 明光市| 呼图壁县| 皋兰县| 乌苏市| 太谷县| 乐安县| 顺义区| 桓台县| 洛阳市|