国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中控制和禁止ScrollView自動滑動到底部的方法

2019-12-12 01:53:20
字體:
來源:轉載
供稿:網友

一、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"

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海城市| 太和县| 资溪县| 长乐市| 开化县| 上栗县| 濮阳县| 门头沟区| 沂南县| 深圳市| 榕江县| 绿春县| 普格县| 肇州县| 枣强县| 金沙县| 周宁县| 财经| 绵阳市| 措勤县| 郯城县| 祁连县| 陆川县| 甘德县| 阿鲁科尔沁旗| 五峰| 大冶市| 酒泉市| 昔阳县| 南阳市| 弥渡县| 平山县| 黑龙江省| 博兴县| 宁乡县| 汪清县| 金乡县| 临湘市| 喀喇沁旗| 湖州市| 突泉县|