Fixing filter selector layout
Two changes here:
1. No longer displaying the second line (account name) for groups
2. Highlighting the currently selected filter in the popup list
Change-Id: Ic13c7aadb89f6e7488732904b78ecc92c34bc7bd
diff --git a/res/layout/navigation_bar.xml b/res/layout/navigation_bar.xml
index e40a00e..62e2632 100644
--- a/res/layout/navigation_bar.xml
+++ b/res/layout/navigation_bar.xml
@@ -41,7 +41,6 @@
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:focusable="true"
- android:focusableInTouchMode="true"
android:minWidth="220dip" >
<ImageView
android:id="@+id/icon"
@@ -51,36 +50,13 @@
android:layout_marginRight="7dip"
android:layout_gravity="center_vertical" />
- <FrameLayout
+ <TextView
+ android:id="@+id/label"
android:layout_height="match_parent"
- android:layout_width="wrap_content">
- <TextView
- android:id="@+id/label"
- android:layout_height="match_parent"
- android:layout_width="wrap_content"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:ellipsize="end" />
- <LinearLayout
- android:id="@+id/group"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="vertical"
- android:layout_gravity="center_vertical">
- <TextView
- android:id="@+id/group_label"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:ellipsize="end" />
- <TextView
- android:id="@+id/account_label"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:ellipsize="end" />
- </LinearLayout>
- </FrameLayout>
+ android:layout_width="wrap_content"
+ android:gravity="center_vertical"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:ellipsize="end" />
</view>
<SearchView
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 919c799..920ff86 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -352,7 +352,9 @@
R.layout.filter_spinner_item, parent, false);
}
view.setSingleAccount(mAccountCount == 1);
- view.setContactListFilter(mFilters.valueAt(position));
+ ContactListFilter filter = mFilters.valueAt(position);
+ view.setContactListFilter(filter);
+ view.setActivated(filter.equals(mFilter));
view.bindView(true);
return view;
}
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index 0f2bbeb..6dc9bc3 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -17,6 +17,7 @@
package com.android.contacts.list;
import com.android.contacts.R;
+import com.android.contacts.util.ThemeUtils;
import android.content.Context;
import android.util.AttributeSet;
@@ -33,11 +34,9 @@
private ImageView mIcon;
private TextView mLabel;
private View mIndent;
- private View mGroupView;
private ContactListFilter mFilter;
private boolean mSingleAccount;
- private TextView mGroupLabel;
- private TextView mAccountLabel;
+ private int mActivatedBackground;
public ContactListFilterView(Context context) {
super(context);
@@ -60,13 +59,17 @@
}
public void bindView(boolean dropdown) {
+ if (dropdown) {
+ if (mActivatedBackground == 0) {
+ mActivatedBackground = ThemeUtils.getActivatedBackground(getContext().getTheme());
+ }
+ setBackgroundResource(mActivatedBackground);
+ }
+
if (mLabel == null) {
mIcon = (ImageView) findViewById(R.id.icon);
mLabel = (TextView) findViewById(R.id.label);
mIndent = findViewById(R.id.indent);
- mGroupView = findViewById(R.id.group);
- mGroupLabel = (TextView) findViewById(R.id.group_label);
- mAccountLabel = (TextView) findViewById(R.id.account_label);
}
if (mFilter == null) {
@@ -74,18 +77,6 @@
return;
}
- if (!dropdown) {
- if (mFilter.filterType == ContactListFilter.FILTER_TYPE_GROUP && !mSingleAccount) {
- mLabel.setVisibility(View.GONE);
- mGroupView.setVisibility(View.VISIBLE);
- } else {
- mLabel.setVisibility(View.VISIBLE);
- mGroupView.setVisibility(View.GONE);
- }
- } else {
- mLabel.setVisibility(View.VISIBLE);
- }
-
switch (mFilter.filterType) {
case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
bindView(R.drawable.ic_menu_contacts_holo_light, R.string.list_filter_all_accounts,
@@ -127,16 +118,9 @@
case ContactListFilter.FILTER_TYPE_GROUP: {
mIcon.setVisibility(View.VISIBLE);
mIcon.setImageResource(R.drawable.ic_menu_display_all_holo_light);
+ mLabel.setText(mFilter.title);
if (dropdown) {
- mLabel.setText(mFilter.title);
mIndent.setVisibility(mSingleAccount ? View.GONE : View.VISIBLE);
- } else {
- if (mSingleAccount) {
- mLabel.setText(mFilter.title);
- } else {
- mGroupLabel.setText(mFilter.title);
- mAccountLabel.setText(mFilter.accountName);
- }
}
break;
}
diff --git a/src/com/android/contacts/util/ThemeUtils.java b/src/com/android/contacts/util/ThemeUtils.java
index 276de29..d1784b6 100644
--- a/src/com/android/contacts/util/ThemeUtils.java
+++ b/src/com/android/contacts/util/ThemeUtils.java
@@ -22,4 +22,11 @@
public static int getSelectableItemBackground(Theme theme) {
return getAttribute(theme, android.R.attr.selectableItemBackground);
}
+
+ /**
+ * Returns the resource id of the background used for list items that show activated background
+ */
+ public static int getActivatedBackground(Theme theme) {
+ return getAttribute(theme, android.R.attr.activatedBackgroundIndicator);
+ }
}