本篇內(nèi)容介紹了“Android中如何控制和禁止ScrollView自動滑動到底部”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達10多年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:成都柴油發(fā)電機等企業(yè),備受客戶表揚。一、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); } }); }
第一種實現(xiàn)相對比較麻煩,更推薦使用第二種方式,使用fullScrol()
下面我們看一下這個函數(shù):
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
滾動到底部
scrollView.fullScroll(ScrollView.FOCUS_UP);
滾動到頂部
需要注意的是:該方法不能直接被調(diào)用
因為Android很多函數(shù)都是基于消息隊列來同步,所以需要一部操作,addView完之后,不等于馬上就會顯示,而是在隊列中等待處理,雖然很快,但是如果立即調(diào)用fullScroll, view可能還沒有顯示出來,所以會失敗
應(yīng)該通過handler在新線程中更新
handler.post(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } });
二、禁止ScrollView自動滑動到底部
但有的時候能我們又需要禁止ScrollView自動滑動到底部,以下是解決方法:
具體表現(xiàn)
ScrollView 嵌套 GridView 、ListView等類似的控件時,當從網(wǎng)絡(luò)上獲取數(shù)據(jù)時刷新界面,此事發(fā)生的情況是: ScrollView 自動滑到屏幕的最低端,具體來說時滑動展示數(shù)據(jù)最后一條的位置,如果此時進行下拉刷新,也會出現(xiàn)布局顯示不合理的狀況。
為何如此
childView 有獲取焦點的能力
由于該 childView 超過屏幕大小,并且有獲取焦點的能力,所以造成了該問題。由于不能改變其大小,只能阻止其獲取焦點?;舅悸酚校∠@取焦點的能力,讓ScrovView截獲它的焦點等。
如何解決
讓 childView 的焦點被截獲
具體方案
ScrollView 下的 LinearLayout 中加了android:descendantFocusability="blocksDescendants"
“Android中如何控制和禁止ScrollView自動滑動到底部”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!