2011-12-16 7 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

ответ

2

вы можете сделать:

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

а также fullScroll() будет обрабатываться, когда все остальное, что уже запланирован (например, макет) является завершено.
Если это по какой-то причине не сработает, вы можете использовать postDelayed(runnable, 100); (используйте тот же runnable, что и в приведенном выше примере), и представление будет прокручиваться через 100 миллисекунд.

+0

Спасибо. Оно работает! – obrien

1

вы пробовали requestLayout()

+0

да .. Но это не работает – obrien

+0

попробовать с макетом Инера а –

+0

вам нужно использовать invalidate() сначала для его работы – kobbycoder

0

Вы пытались дозвониться "schrollView.requestLayout()" или "schrollView.invalidate()"? (. Кстати не стоит его называть «Scrollview»?)

+0

Да, я пробовал их, и он не работает :(Кстати, вы, конечно, прав насчет именования, которое я уже исправил :) – obrien

0

Вы можете использовать метод schrollView.smoothScrollTo (x, y). Таким образом, в вашем случае код будет выглядеть следующим образом:

schrollView.smoothScrollTo(0, deviceHeight); 
0

попытался с помощью recreate(), который доступен с апи 11 ??

Смежные вопросы