@Daniel Bo's hint was correct.
view.getTop()
will give position relative to its immediate parent.
Below is the implementation.
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());
}});
}