Update minitab assets and behavior to match spec.
diff --git a/src/com/android/contacts/ScrollingTabWidget.java b/src/com/android/contacts/ScrollingTabWidget.java
index 2f703aa..ddd101b 100644
--- a/src/com/android/contacts/ScrollingTabWidget.java
+++ b/src/com/android/contacts/ScrollingTabWidget.java
@@ -18,8 +18,10 @@
import android.content.Context;
import android.graphics.Canvas;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@@ -27,6 +29,8 @@
import android.view.ViewTreeObserver;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
+import android.widget.HorizontalScrollView;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
@@ -41,12 +45,11 @@
private OnTabSelectionChangedListener mSelectionChangedListener;
private int mSelectedTab = 0;
- private LinearLayout mLeftArrowView;
- private LinearLayout mRightArrowView;
- private NoDragHorizontalScrollView mTabsScrollWrapper;
- private LinearLayout mTabsView;
+ private ImageView mLeftArrowView;
+ private ImageView mRightArrowView;
+ private HorizontalScrollView mTabsScrollWrapper;
+ private TabStripView mTabsView;
private LayoutInflater mInflater;
- private Drawable mDividerDrawable;
// Keeps track of the left most visible tab.
private int mLeftMostVisibleTabIndex = 0;
@@ -67,20 +70,17 @@
setFocusable(true);
setOnFocusChangeListener(this);
- onLoseFocus();
-// if (!hasFocus()) {
-// setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
-// }
+ if (!hasFocus()) {
+ setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
+ }
- mLeftArrowView = (LinearLayout) mInflater.inflate(R.layout.tab_left_arrow, this, false);
+ mLeftArrowView = (ImageView) mInflater.inflate(R.layout.tab_left_arrow, this, false);
mLeftArrowView.setOnClickListener(this);
- mRightArrowView = (LinearLayout) mInflater.inflate(R.layout.tab_right_arrow, this, false);
+ mRightArrowView = (ImageView) mInflater.inflate(R.layout.tab_right_arrow, this, false);
mRightArrowView.setOnClickListener(this);
- mTabsScrollWrapper = (NoDragHorizontalScrollView) mInflater.inflate(
+ mTabsScrollWrapper = (HorizontalScrollView) mInflater.inflate(
R.layout.tab_layout, this, false);
- mTabsView = (LinearLayout) mTabsScrollWrapper.findViewById(android.R.id.tabs);
- mDividerDrawable = mContext.getResources().getDrawable(
- R.drawable.tab_divider);
+ mTabsView = (TabStripView) mTabsScrollWrapper.findViewById(android.R.id.tabs);
mLeftArrowView.setVisibility(View.INVISIBLE);
mRightArrowView.setVisibility(View.INVISIBLE);
@@ -140,7 +140,7 @@
* @return the tab indicator view at the given index
*/
public View getChildTabViewAt(int index) {
- return mTabsView.getChildAt(index*2);
+ return mTabsView.getChildAt(index);
}
/**
@@ -149,8 +149,7 @@
* @return the number of tab indicator views.
*/
public int getTabCount() {
- int children = mTabsView.getChildCount();
- return (children + 1) / 2;
+ return mTabsView.getChildCount();
}
public void removeAllTabs() {
@@ -195,9 +194,9 @@
return;
}
- getChildTabViewAt(mSelectedTab).setSelected(false);
+ mTabsView.setSelected(mSelectedTab, false);
mSelectedTab = index;
- getChildTabViewAt(mSelectedTab).setSelected(true);
+ mTabsView.setSelected(mSelectedTab, true);
}
/**
@@ -266,17 +265,6 @@
child.setOnClickListener(new TabClickListener());
child.setOnFocusChangeListener(this);
- // If we already have at least one tab, then add a divider before adding the next tab.
- if (getTabCount() > 0) {
- View divider = new View(mContext);
- final LayoutParams lp = new LayoutParams(
- mDividerDrawable.getIntrinsicWidth(),
- ViewGroup.LayoutParams.FILL_PARENT);
- lp.setMargins(0, 0, 0, 0);
- divider.setLayoutParams(lp);
- divider.setBackgroundDrawable(mDividerDrawable);
- mTabsView.addView(divider);
- }
mTabsView.addView(child);
}
@@ -369,23 +357,8 @@
void onTabSelectionChanged(int tabIndex, boolean clicked);
}
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- boolean handled = super.dispatchKeyEvent(event);
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_DPAD_LEFT:
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- // If tabs move from left/right events we must update mLeftMostVisibleTabIndex.
- updateLeftMostVisible();
- break;
- }
- }
-
- return handled;
- }
-
public void onClick(View v) {
+ updateLeftMostVisible();
if (v == mRightArrowView && (mLeftMostVisibleTabIndex + 1 < getTabCount())) {
tabScroll(true /* right */);
} else if (v == mLeftArrowView && mLeftMostVisibleTabIndex > 0) {