ScrollView簡單自動滾動問題總結

2021-06-05 06:17:54 字數 1424 閱讀 6907

1、當我們在activity裡面獲得view物件的時候,無論是getmeasuredheight()還是gethehgit()方法(放在activity裡的oncreate,onstart,onresum),返回值一律為零。

2、無法使scrollview的內容從最底部開始向上滑動(一開始scrollview為空白,但是內容由下向上慢慢上移)

3、對scrollview的scrollby與scrollto方法區別不是太熟悉;

在網上查詢資料:

1. 在乙個類初始化時,即在建構函式當中是得不到view的實際大小的(這個我測試過,的確)。大家可以試試,getwidth()和getmeasuredwidth()得到的結果都是0,但是可以從ondraw()方法或者dispatchdraw()方法裡面獲得。可以通過呼叫invalidate()來執行ondraw()和dispatchdraw()方法。

2. 這兩個方法所得到的結果的單位是畫素即pixel

getwidth(): view在設定好布局後,整個view的寬度

getmeasuredwidth():對view上的內容進行測量後得到的view內容佔據的寬度。前提是你必須在父布局的onlayout()方法或者此view的ondraw()方法裡呼叫measure(0,0);(measure引數的值可以知己定義),否則得到的結果和getwidth()得到的結果是一樣的。

這兩個方法最主要的區別在於,是否使用了measure()方法,同時measure()使用的位置也很重要。

getheight() 和 get measuredheight() 區別同理。

經過我的測試(不知道有沒有別的方法),scrollview是不能開始就顯示在最底層的,只能在最上面新增乙個控制項,這裡我新增了乙個textview空的空間,這樣在開始顯示的scrollview的時候,是空的,感覺是內容慢慢開始向上移動

scrollto() 是直接指定滾動條的位置, 但是由於這個動作不是單純關於 scrollview 而已, 還要根據 scrollview 裡面包含的view 的實際資訊. 所以這動作必須在頁面載入完成以後才能執行. 

在activity 初始化過程中, 要指定滾動條位置, 必須用下面的**

sview.post(new runnable()  

});

滾動**如下:

public class mainactivity extends activity 

private void iniholder()

@override

protected void onresume()

private runnable scrollrunnable = new runnable() else

}} };

static class holder

}

Android 控制ScrollView滾動到底部

在開發中,我們經常需要更新列表,並將列表拉倒最底部,比如發表微博,聊天介面等等,這裡有兩種辦法,第一種,使用scrollto public static void scrolltobottom final view scroll,final view inner int offset inner.g...

ScrollView與GridView滾動發生衝突

當gridview巢狀在scrollview裡時,發現gridview只顯示了一行。這是因為gridview有自己的滾動條,而scrollview也有自己的滾動條,兩者發生了衝突。解決方法是重寫gridview的onmesure方法,使其不再出現滾動條 public class mygridview...

Android 控制ScrollView滾動到底部

在開發中,我們經常需要更新列表,並將列表拉倒最底部,比如發表微博,聊天介面等等,這裡有兩種辦法 一 使用scrollto 這種實現相對比較麻煩,更推薦使用第二種方式。public static void scrolltobottom final view scroll,final view inne...