我有一个滚动视图,其中我有几个相对布局.并且相对布局有两个按钮动态添加到它.如下所示
滚动视图
_____________________ | ________________ | | |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()); } });
滚动到也不工作
编辑:最初我在相对布局中只有一组按钮.然后smoothScrollTo
按预期工作.后来我把结构改成了上面的风格.
@Daniel Bo的提示是正确的.
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()); }}); }