概要
ExpandableListViewでGroupを選択時にsetSelectionFromTopでスクロール位置を設定する。
この際、Galaxy S2(Android4.0.4)では設定した位置にスクロールされたがGalaxy J(Android4.3)ではY位置が0の位置に来てしまう
解決法
View.post(Runnable action)でスクロール位置を設定する
final ExpandableListView expandableListView = (ExpandableListView)findViewById(id);
expandableListView.post(new Runnable()
{
@Override
public void run()
{
expandableListView.setSelectionFromTop(position, y);
}
}).start;
バージョン毎によるsetSelectionFromTopの設定タイミングは分からないが、post()でメッセージキューを設定することにより、ExpandableListViewの描画処理が終わった後にsetSelectionFromTopをするとこにより確実にスクロール位置を設定することが出来る。