2011-12-16 121 views
1

我有一個佈局,其中包含按鈕和textView與可見性=「走了」。這個佈局是scrollView的子元素。當按鈕被按下時,textView的可見性被設置爲「可見」,但它溢出了屏幕(這就是爲什麼它在scrollView中)。如何在android中刷新視圖

我的問題是,我想自動滾動到頁面的末尾。

所以我已經試過:

mySchrollView.fullScroll(View.FOCUS_DOWN); 

不過遺憾的是它不工作。看來佈局將在onClick方法結束後更新(事實上,如果我再次調用此方法(新點擊),它正在工作)。

所以我需要在調用fullScroll(...)之前刷新佈局或屏幕;我嘗試refreshDrawableState()或forceLayout(),但它也沒有工作。

你有什麼想法如何解決它?

非常感謝

+0

http://developer.android.com/reference/android/view/View.html#invalidate() – logcat 2011-12-16 12:54:06

回答

2

你可以這樣做:

yourText.setVisibility(View.VISIBLE); 
schrollView.post(new Runnable{ 
    @Override 
    public void run(){ 
     schrollView.fullScroll(View.FOCUS_DOWN); 
    } 
} 

而當其他一切已經安排(例如,佈局)的fullScroll()將被處理爲完成。
如果由於某種原因無法正常工作,可以使用postDelayed(runnable, 100);(使用與上例相同的可運行參數),並且視圖將在100毫秒後滾動。

1

你試過requestLayout()

+0

是的..但它不起作用 – obrien 2011-12-16 13:04:21

+0

嘗試用你的佈局以及 – 2011-12-16 13:16:32

+0

你需要使用無效()第一個它的工作 – kobbycoder 2017-01-10 02:27:02

0

你有沒有打過電話 「schrollView.requestLayout()」 或 「schrollView.invalidate()」? (順便說一句不該它被稱爲「滾動視圖」?)

0

您可以使用schrollView.smoothScrollTo方法(x,y)。 所以,在你的情況下,代碼如下:使用recreate()這是自11 API可嘗試

schrollView.smoothScrollTo(0, deviceHeight); 
0