Динамическая динамическая прокрутка между Relative layouts в scrollView

У меня есть вид прокрутки, в котором у меня есть несколько относительных макетов. А относительная компоновка имеет две кнопки, добавляемые к ней динамически. Как ниже

Просмотр прокрутки

_____________________ | ________________ | | |Relative Layout| | | | |Buttons| | | | |_______________| | | | ________________ | | |Relative Layout| | | | |Buttons| | | | |_______________| | | | |Relative Layout| | | | |Buttons| | | | |_______________| | | | ________________ | | |Relative Layout| | | | |Buttons| | | | |_______________| | | | |Relative Layout| | | | |Buttons| | | | | |_____________________| 

Можно ли динамически прокручивать до определенной относительной компоновки при нажатии кнопки. Я уже пробовал внизу и не работал

 if (count == 1) { final int k = id; mScrollView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated // method stub mScrollView.post(new Runnable() { @Override public void run() { Button btn = (Button) findViewById(k); mScrollView.smoothScrollTo(0,btn.getTop()); } }); 

Выполнить также не работать

Edit: Первоначально у меня был только набор кнопок в относительной компоновке. Затем smoothScrollTo работал так, как ожидалось. Позже я изменил структуру на вышеупомянутый стиль.

Подсказка Даниэля Бо была правильной.

view.getTop() будет давать позицию относительно своего непосредственного родителя.

Ниже приведена реализация.

 ScrollView mScrollView = (ScrollView) findViewById(R.id.scroll_view); mScrollView.post(new Runnable() { public void run() { Button btn = (Button) findViewById(k); ViewGroup vg =(ViewGroup)btn.getParent(); mScrollView.smoothScrollTo(0,vg.getTop()); }}); } 
Intereting Posts