Bug 1067388 - Scroll ensure selected tab is always fully visible (r=mcomella)

This commit is contained in:
Lucas Rocha 2014-10-29 17:39:12 +00:00
parent 8181079135
commit 57e7905cd8

View File

@ -13,6 +13,8 @@ import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnPreDrawListener;
import java.util.ArrayList;
import java.util.List;
@ -73,9 +75,21 @@ public class TabStripView extends TwoWayView {
final int selected = getPositionForSelectedTab();
if (selected != -1) {
updateSelectedStyle(selected);
ensurePositionIsVisible(selected);
}
}
private void ensurePositionIsVisible(final int position) {
getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
getViewTreeObserver().removeOnPreDrawListener(this);
smoothScrollToPosition(position);
return true;
}
});
}
private int getCheckedIndex(int childCount) {
final int checkedIndex = getCheckedItemPosition() - getFirstVisiblePosition();
if (checkedIndex < 0 || checkedIndex > childCount - 1) {