Как обновить вид в андроид - PullRequest
1 голос
/ 16 декабря 2011

У меня есть макет, который содержит кнопку и textView с видимостью = "ушел".Этот макет является дочерним для scrollView.Когда кнопка нажата, видимость textView установлена ​​на «видимый», но она переполняет экран (вот почему она находится в scrollView).

Моя проблема заключается в том, что я хочу автоматически прокрутить до концастраница.

Итак, я попробовал:

mySchrollView.fullScroll(View.FOCUS_DOWN);

Но, к сожалению, это не работает.Похоже, что макет будет обновлен после завершения метода onClick (и действительно, если я вызову этот метод снова (новый щелчок), он работает).

Поэтому мне нужно обновить макет или экран перед вызовом fullScroll (...);Я попробовал refreshDrawableState () или forceLayout (), но он тоже не сработал.

У вас есть идеи, как ее решить?

Большое спасибо

Ответы [ 5 ]

2 голосов
/ 16 декабря 2011

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

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

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

1 голос
/ 16 декабря 2011

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

0 голосов
/ 16 декабря 2011

пробовал использовать recreate(), который доступен с API 11 ??

0 голосов
/ 16 декабря 2011

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

schrollView.smoothScrollTo(0, deviceHeight);
0 голосов
/ 16 декабря 2011

Вы пытались вызвать "schrollView.requestLayout ()" или "schrollView.invalidate ()"? (кстати. Разве это не должно называться "scrollView"?)

...