Update highlight state for primary/secondary targets.
This commit makes it so that when selecting the primary action, the
secondary action is part of the highlighted area, while when selecting
the secondary action, only that is focused.
Bug: 5317438
Change-Id: I85fde86812c7ce35dd2887d158ca7c2eff205809
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
index 0d94622..de6cd97 100644
--- a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
@@ -18,26 +18,26 @@
-->
<!-- Note: padding might be controlled programatically -->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- android:minHeight="@dimen/detail_min_line_item_height">
+ android:paddingLeft="16dip">
- <!-- Note: padding might be controlled programatically -->
- <com.android.contacts.detail.PrimaryActionViewContainer
- android:id="@+id/primary_action_view_container"
- android:layout_width="0dip"
- android:layout_weight="1"
+ <com.android.contacts.detail.ActionsViewContainer
+ android:id="@+id/actions_view_container"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:minHeight="@dimen/detail_min_line_item_height"
+ android:gravity="center_vertical"
android:orientation="horizontal"
- android:layout_gravity="center_vertical"
android:focusable="true"
- android:background="?android:attr/selectableItemBackground">
+ android:background="?android:attr/selectableItemBackground"
+ android:nextFocusRight="@+id/secondary_action_view_container">
+ <!-- Note: padding might be controlled programatically -->
<LinearLayout
+ android:id="@+id/primary_action_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
@@ -80,7 +80,7 @@
android:id="@+id/type"
style="@style/ContactDetailItemType"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingRight="16dip" />
@@ -92,33 +92,34 @@
android:layout_gravity="center_vertical"
android:background="@drawable/ic_menu_mark" />
- </com.android.contacts.detail.PrimaryActionViewContainer>
- <View
- android:id="@+id/vertical_divider"
- android:layout_width="1px"
- android:layout_height="match_parent"
- android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
- android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
- android:background="?android:attr/dividerVertical" />
-
- <!-- Note: padding might be controlled programatically -->
- <FrameLayout
- android:id="@+id/secondary_action_view_container"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/detail_item_icon_margin"
- android:paddingRight="@dimen/detail_item_icon_margin"
- android:duplicateParentState="false"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground">
- <ImageView
- android:id="@+id/secondary_action_button"
- android:layout_width="32dip"
+ <View
+ android:id="@+id/vertical_divider"
+ android:layout_width="1px"
android:layout_height="match_parent"
- android:layout_centerVertical="true"
- android:gravity="center"
- android:scaleType="center"
- android:duplicateParentState="false" />
- </FrameLayout>
-</LinearLayout>
+ android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+ android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
+ android:background="?android:attr/dividerVertical" />
+
+ <!-- Note: padding might be controlled programatically -->
+ <FrameLayout
+ android:id="@+id/secondary_action_view_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="@dimen/detail_item_icon_margin"
+ android:paddingRight="@dimen/detail_item_icon_margin"
+ android:duplicateParentState="false"
+ android:focusable="true"
+ android:background="?android:attr/selectableItemBackground"
+ android:nextFocusLeft="@id/actions_view_container">
+ <ImageView
+ android:id="@+id/secondary_action_button"
+ android:layout_width="32dip"
+ android:layout_height="match_parent"
+ android:layout_centerVertical="true"
+ android:gravity="center"
+ android:scaleType="center"
+ android:duplicateParentState="false" />
+ </FrameLayout>
+ </com.android.contacts.detail.ActionsViewContainer>
+</FrameLayout>
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index 99f027f..ece0064 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -18,27 +18,28 @@
-->
<!-- Note: padding might be controlled programatically -->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
android:gravity="center_vertical"
+ android:paddingLeft="16dip"
android:paddingTop="8dip"
android:paddingBottom="8dip"
android:minHeight="@dimen/detail_min_line_item_height">
- <!-- Note: padding might be controlled programatically -->
- <com.android.contacts.detail.PrimaryActionViewContainer
- android:id="@+id/primary_action_view_container"
- android:layout_width="0dip"
- android:layout_weight="1"
+ <com.android.contacts.detail.ActionsViewContainer
+ android:id="@+id/actions_view_container"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:focusable="true"
- android:background="?android:attr/selectableItemBackground">
+ android:background="?android:attr/selectableItemBackground"
+ android:nextFocusRight="@+id/secondary_action_view_container">
+ <!-- Note: padding might be controlled programatically -->
<LinearLayout
+ android:id="@+id/primary_action_view"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
@@ -93,30 +94,31 @@
android:visibility="gone" />
</LinearLayout>
- </com.android.contacts.detail.PrimaryActionViewContainer>
- <View
- android:id="@+id/vertical_divider"
- android:layout_width="1dip"
- android:layout_height="match_parent"
- android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
- android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
- android:background="?android:attr/dividerVertical" />
+ <View
+ android:id="@+id/vertical_divider"
+ android:layout_width="1dip"
+ android:layout_height="match_parent"
+ android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+ android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
+ android:background="?android:attr/dividerVertical" />
- <!-- Note: padding might be controlled programatically -->
- <FrameLayout
- android:id="@+id/secondary_action_view_container"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/detail_item_icon_margin"
- android:paddingRight="@dimen/detail_item_icon_margin"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground">
- <ImageView
- android:id="@+id/secondary_action_button"
- android:layout_width="32dip"
- android:layout_height="32dip"
- android:layout_gravity="center_vertical"
- android:duplicateParentState="false" />
- </FrameLayout>
-</LinearLayout>
+ <!-- Note: padding might be controlled programatically -->
+ <FrameLayout
+ android:id="@+id/secondary_action_view_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="@dimen/detail_item_icon_margin"
+ android:paddingRight="@dimen/detail_item_icon_margin"
+ android:focusable="true"
+ android:background="?android:attr/selectableItemBackground"
+ android:nextFocusLeft="@id/actions_view_container">
+ <ImageView
+ android:id="@+id/secondary_action_button"
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:layout_gravity="center_vertical"
+ android:duplicateParentState="false" />
+ </FrameLayout>
+ </com.android.contacts.detail.ActionsViewContainer>
+</FrameLayout>
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
index 7929718..c018eea 100755
--- a/res/layout/quickcontact_list_item.xml
+++ b/res/layout/quickcontact_list_item.xml
@@ -16,22 +16,23 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/actions_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
- android:background="@drawable/quickcontact_list_item_background"
- android:gravity="center_vertical">
+ android:gravity="center_vertical"
+ android:background="?android:attr/selectableItemBackground"
+ android:nextFocusRight="@+id/secondary_action_button">
<LinearLayout
- android:id="@+id/primary_action_view_container"
android:layout_width="0dip"
android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight"
android:layout_weight="1"
- android:orientation="vertical"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:gravity="center_vertical"
- android:background="?android:attr/selectableItemBackground">
+ android:orientation="vertical"
+ >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
@@ -61,5 +62,6 @@
android:paddingLeft="@dimen/detail_item_icon_margin"
android:paddingRight="@dimen/detail_item_icon_margin"
android:background="?android:attr/selectableItemBackground"
- android:duplicateParentState="false" />
+ android:duplicateParentState="false"
+ android:nextFocusLeft="@id/actions_view_container" />
</LinearLayout>
diff --git a/src/com/android/contacts/detail/PrimaryActionViewContainer.java b/src/com/android/contacts/detail/ActionsViewContainer.java
similarity index 79%
rename from src/com/android/contacts/detail/PrimaryActionViewContainer.java
rename to src/com/android/contacts/detail/ActionsViewContainer.java
index a342884..05382eb 100644
--- a/src/com/android/contacts/detail/PrimaryActionViewContainer.java
+++ b/src/com/android/contacts/detail/ActionsViewContainer.java
@@ -25,21 +25,21 @@
/**
* Custom {@link LinearLayout} which remembers its position in the {@link ListView}. Should be
- * used for primary touch targets in {@link ContactDetailFragment}.
+ * used for action touch targets in {@link ContactDetailFragment}.
*/
-/* package */ class PrimaryActionViewContainer extends LinearLayout {
+/* package */ class ActionsViewContainer extends LinearLayout {
private ContextMenuInfo mContextMenuInfo;
- public PrimaryActionViewContainer(Context context) {
+ public ActionsViewContainer(Context context) {
super(context);
}
- public PrimaryActionViewContainer(Context context, AttributeSet attrs) {
+ public ActionsViewContainer(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
- public PrimaryActionViewContainer(Context context, AttributeSet attrs, int defStyle) {
+ public ActionsViewContainer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 775b50a..cac4bd5 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -23,7 +23,6 @@
import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsUtils;
import com.android.contacts.GroupMetaData;
-import com.android.contacts.NfcHandler;
import com.android.contacts.R;
import com.android.contacts.TypePrecedence;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
@@ -1412,7 +1411,8 @@
public final TextView footer;
public final ImageView presenceIcon;
public final ImageView secondaryActionButton;
- public final View primaryActionViewContainer;
+ public final View actionsViewContainer;
+ public final View primaryActionView;
public final View secondaryActionViewContainer;
public final View secondaryActionDivider;
public final View primaryIndicator;
@@ -1426,8 +1426,9 @@
primaryIndicator = view.findViewById(R.id.primary_indicator);
presenceIcon = (ImageView) view.findViewById(R.id.presence_icon);
- primaryActionViewContainer = view.findViewById(R.id.primary_action_view_container);
- primaryActionViewContainer.setOnClickListener(primaryActionClickListener);
+ actionsViewContainer = view.findViewById(R.id.actions_view_container);
+ actionsViewContainer.setOnClickListener(primaryActionClickListener);
+ primaryActionView = view.findViewById(R.id.primary_action_view);
secondaryActionViewContainer = view.findViewById(
R.id.secondary_action_view_container);
@@ -1626,11 +1627,11 @@
presenceIconView.setVisibility(View.GONE);
}
- final PrimaryActionViewContainer primaryActionButtonContainer =
- (PrimaryActionViewContainer) views.primaryActionViewContainer;
- primaryActionButtonContainer.setTag(entry);
- primaryActionButtonContainer.setPosition(position);
- registerForContextMenu(primaryActionButtonContainer);
+ final ActionsViewContainer actionsButtonContainer =
+ (ActionsViewContainer) views.actionsViewContainer;
+ actionsButtonContainer.setTag(entry);
+ actionsButtonContainer.setPosition(position);
+ registerForContextMenu(actionsButtonContainer);
// Set the secondary action button
final ImageView secondaryActionView = views.secondaryActionButton;
@@ -1656,14 +1657,18 @@
views.secondaryActionDivider.setVisibility(View.GONE);
}
- // Right padding should not have "pressed" effect.
- view.setPadding(0, 0, mViewEntryDimensions.getPaddingRight(), 0);
- // Top, left, and bottom paddings should have "pressed" effect.
- primaryActionButtonContainer.setPadding(entry.isInSubSection() ?
- mViewEntryDimensions.getWidePaddingLeft() :
- mViewEntryDimensions.getPaddingLeft(),
+ // Right and left padding should not have "pressed" effect.
+ view.setPadding(
+ entry.isInSubSection()
+ ? mViewEntryDimensions.getWidePaddingLeft()
+ : mViewEntryDimensions.getPaddingLeft(),
+ 0, mViewEntryDimensions.getPaddingRight(), 0);
+ // Top and bottom padding should have "pressed" effect.
+ final View primaryActionView = views.primaryActionView;
+ primaryActionView.setPadding(
+ primaryActionView.getPaddingLeft(),
mViewEntryDimensions.getPaddingTop(),
- 0,
+ primaryActionView.getPaddingRight(),
mViewEntryDimensions.getPaddingBottom());
secondaryActionViewContainer.setPadding(
secondaryActionViewContainer.getPaddingLeft(),
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index cd899fa..962f07f 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -25,8 +25,6 @@
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -100,14 +98,14 @@
android.R.id.text1);
final TextView text2 = (TextView) resultView.findViewById(
android.R.id.text2);
- final View primaryActionContainer = resultView.findViewById(
- R.id.primary_action_view_container);
+ final View actionsContainer = resultView.findViewById(
+ R.id.actions_view_container);
final ImageView alternateActionButton = (ImageView) resultView.findViewById(
R.id.secondary_action_button);
final View alternateActionDivider = resultView.findViewById(R.id.vertical_divider);
- primaryActionContainer.setOnClickListener(mPrimaryActionClickListener);
- primaryActionContainer.setTag(action);
+ actionsContainer.setOnClickListener(mPrimaryActionClickListener);
+ actionsContainer.setTag(action);
alternateActionButton.setOnClickListener(mSecondaryActionClickListener);
alternateActionButton.setTag(action);