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);
             }
         }
 
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
index 14453dc..ec42c94 100644
--- a/src/com/android/browser/NavTabView.java
+++ b/src/com/android/browser/NavTabView.java
@@ -17,8 +17,10 @@
 package com.android.browser;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -42,6 +44,9 @@
     OnClickListener mClickListener;
     boolean mHighlighted;
     Drawable mTitleBg;
+    Drawable mUrlBg;
+    float mMediumTextSize;
+    float mSmallTextSize;
 
     public NavTabView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
@@ -59,6 +64,9 @@
     }
 
     private void init() {
+        final Resources res = mContext.getResources();
+        mMediumTextSize = res.getDimension(R.dimen.nav_tab_text_normal);
+        mSmallTextSize = res.getDimension(R.dimen.nav_tab_text_small);
         LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view,
                     this);
         mContainer = (FrameLayout) findViewById(R.id.tab_view);
@@ -68,9 +76,10 @@
         mTitle = (TextView) findViewById(R.id.title);
         mFavicon = (ImageView) findViewById(R.id.favicon);
         mTitleBar = findViewById(R.id.titlebar);
-        mTitleBg = mContext.getResources().getDrawable(R.drawable.bg_urlbar);
+        mTitleBg = res.getDrawable(R.drawable.bg_urlbar);
+        mUrlBg = res.getDrawable(
+                com.android.internal.R.drawable.edit_text_holo_dark);
         setState(false);
-        // refresh titlebar
     }
 
     protected boolean isRefresh(View v) {
@@ -108,6 +117,8 @@
                     ? View.VISIBLE : View.GONE);
             mTitleBar.setBackgroundDrawable(mTitleBg);
             mClose.setVisibility(View.VISIBLE);
+            mTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMediumTextSize);
+            mTitle.setBackgroundDrawable(mUrlBg);
         } else {
             setAlpha(0.8f);
             mForward.setVisibility(View.GONE);
@@ -115,6 +126,8 @@
             mFavicon.setVisibility(View.INVISIBLE);
             mClose.setVisibility(View.GONE);
             mTitleBar.setBackgroundDrawable(null);
+            mTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, mSmallTextSize);
+            mTitle.setBackgroundDrawable(null);
         }
         setTitle();
     }