calculate scroller padding
Change-Id: I727c425e096220ae1230e3fbe0f1edb4b3fea8ed
diff --git a/src/com/android/browser/NavTabScroller.java b/src/com/android/browser/NavTabScroller.java
index cbb2cfd..9434ff0 100644
--- a/src/com/android/browser/NavTabScroller.java
+++ b/src/com/android/browser/NavTabScroller.java
@@ -66,6 +66,25 @@
addView(sview);
}
+ @Override
+ protected void onMeasure(int wspec, int hspec) {
+ super.onMeasure(wspec, hspec);
+ calcPadding();
+ }
+
+ private void calcPadding() {
+ if (mAdapter.getCount() > 0) {
+ View v = mContentView.getChildAt(0);
+ if (mOrientation == Configuration.ORIENTATION_PORTRAIT) {
+ int pad = (getMeasuredHeight() - v.getMeasuredHeight()) / 2;
+ mContentView.setPadding(0, pad, 0, pad);
+ } else {
+ int pad = (getMeasuredWidth() - v.getMeasuredWidth()) / 2;
+ mContentView.setPadding(pad, 0, pad, 0);
+ }
+ }
+ }
+
protected void setAdapter(BaseAdapter adapter) {
mAdapter = adapter;
mAdapter.registerDataSetObserver(new DataSetObserver() {
@@ -151,8 +170,6 @@
mContentView.setOrientation(LinearLayout.VERTICAL);
setVerticalScrollBarEnabled(false);
setSmoothScrollingEnabled(true);
- int pad = ctx.getResources().getDimensionPixelSize(R.dimen.nav_scroller_padding);
- mContentView.setPadding(0, pad, 0, pad);
mContentView.setLayoutParams(
new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
addView(mContentView);
@@ -185,10 +202,6 @@
if (sel != mSelected) {
setSelection(sel);
}
- if (!isCentered(mSelected)) {
- NavTabView ntv = (NavTabView) getSelectedView();
- ntv.setHighlighted(false);
- }
}
}
@@ -201,6 +214,11 @@
if (mScroller.isFinished() && dragged) {
snapToSelected();
}
+ } else if (MotionEvent.ACTION_MOVE == evt.getActionMasked()) {
+ NavTabView ntv = (NavTabView) getSelectedView();
+ if (mIsBeingDragged && ntv.isHighlighted()) {
+ ntv.setHighlighted(false);
+ }
}
return result;
}
@@ -215,17 +233,11 @@
// reset snap scrolling flag
mSnapScroll = false;
NavTabView ntv = (NavTabView) getSelectedView();
- ntv.setHighlighted(isCentered(mSelected));
+ ntv.setHighlighted(true);
}
}
}
- private boolean isCentered(int ix) {
- int midy = getScrollY() + (getTop() + getBottom()) / 2;
- View v = mContentView.getChildAt(ix);
- return (v.getTop() + v.getBottom()) / 2 == midy;
- }
-
private void snapToSelected() {
View v = mContentView.getChildAt(mSelected);
int top = (v.getTop() + v.getBottom()) / 2;
@@ -234,6 +246,9 @@
// snap to selected
mSnapScroll = true;
smoothScrollTo(0, top);
+ } else {
+ NavTabView ntv = (NavTabView) getSelectedView();
+ ntv.setHighlighted(true);
}
}
@@ -270,12 +285,9 @@
mContentView.setOrientation(LinearLayout.HORIZONTAL);
setVerticalScrollBarEnabled(false);
setSmoothScrollingEnabled(true);
- int pad = ctx.getResources().getDimensionPixelSize(R.dimen.nav_scroller_padding);
- mContentView.setPadding(pad, 0, pad, 0);
mContentView.setLayoutParams(
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
addView(mContentView);
-
}
public LinearLayout getContentView() {
@@ -304,10 +316,6 @@
if (sel != mSelected) {
setSelection(sel);
}
- if (!isCentered(mSelected)) {
- NavTabView ntv = (NavTabView) getSelectedView();
- ntv.setHighlighted(false);
- }
}
}
@@ -320,6 +328,11 @@
if (mScroller.isFinished() && dragged) {
snapToSelected();
}
+ } else if (MotionEvent.ACTION_MOVE == evt.getActionMasked()) {
+ NavTabView ntv = (NavTabView) getSelectedView();
+ if (mIsBeingDragged && ntv.isHighlighted()) {
+ ntv.setHighlighted(false);
+ }
}
return result;
}
@@ -334,17 +347,11 @@
// reset snap scrolling flag
mSnapScroll = false;
NavTabView ntv = (NavTabView) getSelectedView();
- ntv.setHighlighted(isCentered(mSelected));
+ ntv.setHighlighted(true);
}
}
}
- private boolean isCentered(int ix) {
- int midx = getScrollX() + getWidth() / 2;
- View v = mContentView.getChildAt(ix);
- return (v.getLeft() + v.getRight()) / 2 == midx;
- }
-
private void snapToSelected() {
View v = mContentView.getChildAt(mSelected);
int left = (v.getLeft() + v.getRight()) / 2;
@@ -353,6 +360,9 @@
// snap to selected
mSnapScroll = true;
smoothScrollTo(left, 0);
+ } else {
+ NavTabView ntv = (NavTabView) getSelectedView();
+ ntv.setHighlighted(true);
}
}