Loading res/layout-sw580dp-w1000dp/contact_detail_list_item.xml +91 −96 Original line number Diff line number Diff line Loading @@ -17,56 +17,25 @@ */ --> <!-- Note: padding might be controlled programatically --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical" android:orientation="vertical" android:minHeight="@dimen/detail_min_line_item_height"> <LinearLayout android:layout_width="match_parent" <!-- 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" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_vertical"> <FrameLayout android:layout_width="@dimen/detail_item_type_width" android:layout_height="@dimen/detail_min_line_item_height" android:paddingLeft="@dimen/detail_item_side_margin"> <TextView android:id="@+id/kind" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/type" style="@style/ContactDetailItemType" /> <View android:id="@+id/primary_indicator" android:layout_width="16dip" android:layout_height="16dip" android:visibility="gone" android:layout_gravity="center_vertical" android:background="@drawable/ic_menu_mark" /> </LinearLayout> </FrameLayout> android:focusable="true" android:background="?android:attr/selectableItemBackground"> <LinearLayout android:layout_width="wrap_content" Loading Loading @@ -99,26 +68,57 @@ android:gravity="center" android:scaleType="centerInside" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="@dimen/detail_min_line_item_height" android:paddingLeft="@dimen/detail_item_side_margin" android:paddingRight="@dimen/detail_item_side_margin"> <TextView android:id="@+id/kind" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/type" style="@style/ContactDetailItemType" /> <View android:id="@+id/primary_indicator" android:layout_width="16dip" android:layout_height="16dip" android:visibility="gone" android:layout_gravity="center_vertical" android:background="@drawable/ic_menu_mark" /> </LinearLayout> </FrameLayout> </com.android.contacts.detail.PrimaryActionViewContainer> <View android:id="@+id/vertical_divider" android:layout_width="1px" android:layout_height="match_parent" android:layout_marginTop="5dip" android:layout_marginBottom="5dip" android:layout_marginLeft="14dip" android:layout_marginRight="14dip" 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_button_container" android:id="@+id/secondary_action_view_container" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginTop="10dip" 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" Loading @@ -127,10 +127,5 @@ android:gravity="center" android:scaleType="center" android:duplicateParentState="false" /> </FrameLayout> </LinearLayout> </LinearLayout> </LinearLayout> res/layout/contact_detail_list_item.xml +63 −49 Original line number Diff line number Diff line Loading @@ -17,12 +17,24 @@ */ --> <!-- Note: padding might be controlled programatically --> <LinearLayout 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:gravity="center_vertical" 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" android:layout_height="wrap_content" android:orientation="horizontal" android:focusable="true" android:background="?android:attr/selectableItemBackground"> <LinearLayout android:layout_width="0dip" Loading Loading @@ -81,22 +93,24 @@ android:layout_marginLeft="5dip" android:gravity="center" android:scaleType="centerInside" /> </com.android.contacts.detail.PrimaryActionViewContainer> <View android:id="@+id/vertical_divider" android:layout_width="1dip" android:layout_height="match_parent" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" 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_button_container" 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" Loading res/layout/quickcontact_list_item.xml +4 −2 Original line number Diff line number Diff line Loading @@ -20,16 +20,18 @@ android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/quickcontact_list_item_background" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical"> <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:gravity="center_vertical" android:background="?android:attr/selectableItemBackground"> <TextView android:id="@android:id/text1" android:layout_width="wrap_content" Loading res/values/dimens.xml +4 −3 Original line number Diff line number Diff line Loading @@ -133,15 +133,16 @@ <!-- Minimum height of a row in the contact detail --> <dimen name="detail_min_line_item_height">48dip</dimen> <!-- Width of a contact detail item type (i.e. Nickname or Website). --> <dimen name="detail_item_type_width">164dip</dimen> <!-- Width of height of an icon from a third-party app in the networks section of the contact card. --> <dimen name="detail_network_icon_size">32dip</dimen> <!-- Font size for the display name in header of the contact detail page --> <dimen name="detail_header_name_text_size">36sp</dimen> <!-- Vertical margin for vertical dividers existing between primary data (phone number, email, etc.) and a secondary action button --> <dimen name="detail_vertical_divider_vertical_margin">16dip</dimen> <!-- Padding to be used between a visible scrollbar and the contact list --> <dimen name="list_visible_scrollbar_padding">40dip</dimen> Loading src/com/android/contacts/detail/ContactDetailFragment.java +65 −39 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ import java.util.List; import java.util.Map; public class ContactDetailFragment extends Fragment implements FragmentKeyListener, ViewOverlay, OnItemClickListener, SelectAccountDialogFragment.Listener { SelectAccountDialogFragment.Listener { private static final String TAG = "ContactDetailFragment"; Loading Loading @@ -264,8 +264,7 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen mListView = (ListView) mView.findViewById(android.R.id.list); mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY); mListView.setOnItemClickListener(this); registerForContextMenu(mListView); mListView.setItemsCanFocus(true); mListView.setOnScrollListener(mVerticalScrollListener); // Don't set it to mListView yet. We do so later when we bind the adapter. Loading Loading @@ -1331,29 +1330,37 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen * {@link DetailViewEntry} */ private static class DetailViewCache { public TextView kind; public TextView type; public TextView data; public TextView footer; public ImageView presenceIcon; public ImageView secondaryActionButton; public View secondaryActionButtonContainer; public View secondaryActionDivider; public View primaryIndicator; public DetailViewCache(View view, OnClickListener secondaryActionClickListener) { public final TextView kind; public final TextView type; public final TextView data; public final TextView footer; public final ImageView presenceIcon; public final ImageView secondaryActionButton; public final View primaryActionViewContainer; public final View secondaryActionViewContainer; public final View secondaryActionDivider; public final View primaryIndicator; public DetailViewCache(View view, OnClickListener primaryActionClickListener, OnClickListener secondaryActionClickListener) { kind = (TextView) view.findViewById(R.id.kind); type = (TextView) view.findViewById(R.id.type); data = (TextView) view.findViewById(R.id.data); footer = (TextView) view.findViewById(R.id.footer); 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); secondaryActionViewContainer = view.findViewById( R.id.secondary_action_view_container); secondaryActionViewContainer.setOnClickListener( secondaryActionClickListener); secondaryActionButton = (ImageView) view.findViewById( R.id.secondary_action_button); secondaryActionButtonContainer = view.findViewById( R.id.secondary_action_button_container); secondaryActionButtonContainer.setOnClickListener( secondaryActionClickListener); secondaryActionDivider = view.findViewById(R.id.vertical_divider); } } Loading Loading @@ -1494,15 +1501,16 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen v = mInflater.inflate(R.layout.contact_detail_list_item, parent, false); // Cache the children viewCache = new DetailViewCache(v, mSecondaryActionClickListener); viewCache = new DetailViewCache(v, mPrimaryActionClickListener, mSecondaryActionClickListener); v.setTag(viewCache); } bindDetailView(v, entry); bindDetailView(position, v, entry); return v; } private void bindDetailView(View view, DetailViewEntry entry) { private void bindDetailView(int position, View view, DetailViewEntry entry) { final Resources resources = mContext.getResources(); DetailViewCache views = (DetailViewCache) view.getTag(); Loading Loading @@ -1538,6 +1546,12 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen presenceIconView.setVisibility(View.GONE); } final PrimaryActionViewContainer primaryActionButtonContainer = (PrimaryActionViewContainer) views.primaryActionViewContainer; primaryActionButtonContainer.setTag(entry); primaryActionButtonContainer.setPosition(position); registerForContextMenu(primaryActionButtonContainer); // Set the secondary action button final ImageView secondaryActionView = views.secondaryActionButton; Drawable secondaryActionIcon = null; Loading @@ -1551,20 +1565,30 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen resources.getDrawable(R.drawable.sym_action_audiochat_holo_light); } final View secondaryActionViewContainer = views.secondaryActionViewContainer; if (entry.secondaryIntent != null && secondaryActionIcon != null) { secondaryActionView.setImageDrawable(secondaryActionIcon); views.secondaryActionButtonContainer.setTag(entry); views.secondaryActionButtonContainer.setVisibility(View.VISIBLE); secondaryActionViewContainer.setTag(entry); secondaryActionViewContainer.setVisibility(View.VISIBLE); views.secondaryActionDivider.setVisibility(View.VISIBLE); } else { views.secondaryActionButtonContainer.setVisibility(View.GONE); secondaryActionViewContainer.setVisibility(View.GONE); views.secondaryActionDivider.setVisibility(View.GONE); } view.setPadding(entry.isInSubSection() ? mViewEntryDimensions.getWidePaddingLeft() : // 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(), mViewEntryDimensions.getPaddingTop(), mViewEntryDimensions.getPaddingRight(), 0, mViewEntryDimensions.getPaddingBottom()); secondaryActionViewContainer.setPadding( secondaryActionViewContainer.getPaddingLeft(), mViewEntryDimensions.getPaddingTop(), secondaryActionViewContainer.getPaddingRight(), mViewEntryDimensions.getPaddingBottom()); } Loading @@ -1579,12 +1603,22 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen } } private OnClickListener mSecondaryActionClickListener = new OnClickListener() { private final OnClickListener mPrimaryActionClickListener = new OnClickListener() { @Override public void onClick(View v) { public void onClick(View view) { if (mListener == null) return; final ViewEntry entry = (ViewEntry) view.getTag(); if (entry == null) return; entry.click(view, mListener); } }; private final OnClickListener mSecondaryActionClickListener = new OnClickListener() { @Override public void onClick(View view) { if (mListener == null) return; if (v == null) return; final ViewEntry entry = (ViewEntry) v.getTag(); if (view == null) return; final ViewEntry entry = (ViewEntry) view.getTag(); if (entry == null || !(entry instanceof DetailViewEntry)) return; final DetailViewEntry detailViewEntry = (DetailViewEntry) entry; final Intent intent = detailViewEntry.secondaryIntent; Loading Loading @@ -1649,14 +1683,6 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (mListener == null) return; final ViewEntry entry = mAdapter.getItem(position); if (entry == null) return; entry.click(view, mListener); } @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, view, menuInfo); Loading Loading
res/layout-sw580dp-w1000dp/contact_detail_list_item.xml +91 −96 Original line number Diff line number Diff line Loading @@ -17,56 +17,25 @@ */ --> <!-- Note: padding might be controlled programatically --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical" android:orientation="vertical" android:minHeight="@dimen/detail_min_line_item_height"> <LinearLayout android:layout_width="match_parent" <!-- 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" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_vertical"> <FrameLayout android:layout_width="@dimen/detail_item_type_width" android:layout_height="@dimen/detail_min_line_item_height" android:paddingLeft="@dimen/detail_item_side_margin"> <TextView android:id="@+id/kind" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/type" style="@style/ContactDetailItemType" /> <View android:id="@+id/primary_indicator" android:layout_width="16dip" android:layout_height="16dip" android:visibility="gone" android:layout_gravity="center_vertical" android:background="@drawable/ic_menu_mark" /> </LinearLayout> </FrameLayout> android:focusable="true" android:background="?android:attr/selectableItemBackground"> <LinearLayout android:layout_width="wrap_content" Loading Loading @@ -99,26 +68,57 @@ android:gravity="center" android:scaleType="centerInside" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="@dimen/detail_min_line_item_height" android:paddingLeft="@dimen/detail_item_side_margin" android:paddingRight="@dimen/detail_item_side_margin"> <TextView android:id="@+id/kind" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/type" style="@style/ContactDetailItemType" /> <View android:id="@+id/primary_indicator" android:layout_width="16dip" android:layout_height="16dip" android:visibility="gone" android:layout_gravity="center_vertical" android:background="@drawable/ic_menu_mark" /> </LinearLayout> </FrameLayout> </com.android.contacts.detail.PrimaryActionViewContainer> <View android:id="@+id/vertical_divider" android:layout_width="1px" android:layout_height="match_parent" android:layout_marginTop="5dip" android:layout_marginBottom="5dip" android:layout_marginLeft="14dip" android:layout_marginRight="14dip" 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_button_container" android:id="@+id/secondary_action_view_container" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginTop="10dip" 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" Loading @@ -127,10 +127,5 @@ android:gravity="center" android:scaleType="center" android:duplicateParentState="false" /> </FrameLayout> </LinearLayout> </LinearLayout> </LinearLayout>
res/layout/contact_detail_list_item.xml +63 −49 Original line number Diff line number Diff line Loading @@ -17,12 +17,24 @@ */ --> <!-- Note: padding might be controlled programatically --> <LinearLayout 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:gravity="center_vertical" 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" android:layout_height="wrap_content" android:orientation="horizontal" android:focusable="true" android:background="?android:attr/selectableItemBackground"> <LinearLayout android:layout_width="0dip" Loading Loading @@ -81,22 +93,24 @@ android:layout_marginLeft="5dip" android:gravity="center" android:scaleType="centerInside" /> </com.android.contacts.detail.PrimaryActionViewContainer> <View android:id="@+id/vertical_divider" android:layout_width="1dip" android:layout_height="match_parent" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" 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_button_container" 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" Loading
res/layout/quickcontact_list_item.xml +4 −2 Original line number Diff line number Diff line Loading @@ -20,16 +20,18 @@ android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/quickcontact_list_item_background" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical"> <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:gravity="center_vertical" android:background="?android:attr/selectableItemBackground"> <TextView android:id="@android:id/text1" android:layout_width="wrap_content" Loading
res/values/dimens.xml +4 −3 Original line number Diff line number Diff line Loading @@ -133,15 +133,16 @@ <!-- Minimum height of a row in the contact detail --> <dimen name="detail_min_line_item_height">48dip</dimen> <!-- Width of a contact detail item type (i.e. Nickname or Website). --> <dimen name="detail_item_type_width">164dip</dimen> <!-- Width of height of an icon from a third-party app in the networks section of the contact card. --> <dimen name="detail_network_icon_size">32dip</dimen> <!-- Font size for the display name in header of the contact detail page --> <dimen name="detail_header_name_text_size">36sp</dimen> <!-- Vertical margin for vertical dividers existing between primary data (phone number, email, etc.) and a secondary action button --> <dimen name="detail_vertical_divider_vertical_margin">16dip</dimen> <!-- Padding to be used between a visible scrollbar and the contact list --> <dimen name="list_visible_scrollbar_padding">40dip</dimen> Loading
src/com/android/contacts/detail/ContactDetailFragment.java +65 −39 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ import java.util.List; import java.util.Map; public class ContactDetailFragment extends Fragment implements FragmentKeyListener, ViewOverlay, OnItemClickListener, SelectAccountDialogFragment.Listener { SelectAccountDialogFragment.Listener { private static final String TAG = "ContactDetailFragment"; Loading Loading @@ -264,8 +264,7 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen mListView = (ListView) mView.findViewById(android.R.id.list); mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY); mListView.setOnItemClickListener(this); registerForContextMenu(mListView); mListView.setItemsCanFocus(true); mListView.setOnScrollListener(mVerticalScrollListener); // Don't set it to mListView yet. We do so later when we bind the adapter. Loading Loading @@ -1331,29 +1330,37 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen * {@link DetailViewEntry} */ private static class DetailViewCache { public TextView kind; public TextView type; public TextView data; public TextView footer; public ImageView presenceIcon; public ImageView secondaryActionButton; public View secondaryActionButtonContainer; public View secondaryActionDivider; public View primaryIndicator; public DetailViewCache(View view, OnClickListener secondaryActionClickListener) { public final TextView kind; public final TextView type; public final TextView data; public final TextView footer; public final ImageView presenceIcon; public final ImageView secondaryActionButton; public final View primaryActionViewContainer; public final View secondaryActionViewContainer; public final View secondaryActionDivider; public final View primaryIndicator; public DetailViewCache(View view, OnClickListener primaryActionClickListener, OnClickListener secondaryActionClickListener) { kind = (TextView) view.findViewById(R.id.kind); type = (TextView) view.findViewById(R.id.type); data = (TextView) view.findViewById(R.id.data); footer = (TextView) view.findViewById(R.id.footer); 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); secondaryActionViewContainer = view.findViewById( R.id.secondary_action_view_container); secondaryActionViewContainer.setOnClickListener( secondaryActionClickListener); secondaryActionButton = (ImageView) view.findViewById( R.id.secondary_action_button); secondaryActionButtonContainer = view.findViewById( R.id.secondary_action_button_container); secondaryActionButtonContainer.setOnClickListener( secondaryActionClickListener); secondaryActionDivider = view.findViewById(R.id.vertical_divider); } } Loading Loading @@ -1494,15 +1501,16 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen v = mInflater.inflate(R.layout.contact_detail_list_item, parent, false); // Cache the children viewCache = new DetailViewCache(v, mSecondaryActionClickListener); viewCache = new DetailViewCache(v, mPrimaryActionClickListener, mSecondaryActionClickListener); v.setTag(viewCache); } bindDetailView(v, entry); bindDetailView(position, v, entry); return v; } private void bindDetailView(View view, DetailViewEntry entry) { private void bindDetailView(int position, View view, DetailViewEntry entry) { final Resources resources = mContext.getResources(); DetailViewCache views = (DetailViewCache) view.getTag(); Loading Loading @@ -1538,6 +1546,12 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen presenceIconView.setVisibility(View.GONE); } final PrimaryActionViewContainer primaryActionButtonContainer = (PrimaryActionViewContainer) views.primaryActionViewContainer; primaryActionButtonContainer.setTag(entry); primaryActionButtonContainer.setPosition(position); registerForContextMenu(primaryActionButtonContainer); // Set the secondary action button final ImageView secondaryActionView = views.secondaryActionButton; Drawable secondaryActionIcon = null; Loading @@ -1551,20 +1565,30 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen resources.getDrawable(R.drawable.sym_action_audiochat_holo_light); } final View secondaryActionViewContainer = views.secondaryActionViewContainer; if (entry.secondaryIntent != null && secondaryActionIcon != null) { secondaryActionView.setImageDrawable(secondaryActionIcon); views.secondaryActionButtonContainer.setTag(entry); views.secondaryActionButtonContainer.setVisibility(View.VISIBLE); secondaryActionViewContainer.setTag(entry); secondaryActionViewContainer.setVisibility(View.VISIBLE); views.secondaryActionDivider.setVisibility(View.VISIBLE); } else { views.secondaryActionButtonContainer.setVisibility(View.GONE); secondaryActionViewContainer.setVisibility(View.GONE); views.secondaryActionDivider.setVisibility(View.GONE); } view.setPadding(entry.isInSubSection() ? mViewEntryDimensions.getWidePaddingLeft() : // 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(), mViewEntryDimensions.getPaddingTop(), mViewEntryDimensions.getPaddingRight(), 0, mViewEntryDimensions.getPaddingBottom()); secondaryActionViewContainer.setPadding( secondaryActionViewContainer.getPaddingLeft(), mViewEntryDimensions.getPaddingTop(), secondaryActionViewContainer.getPaddingRight(), mViewEntryDimensions.getPaddingBottom()); } Loading @@ -1579,12 +1603,22 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen } } private OnClickListener mSecondaryActionClickListener = new OnClickListener() { private final OnClickListener mPrimaryActionClickListener = new OnClickListener() { @Override public void onClick(View v) { public void onClick(View view) { if (mListener == null) return; final ViewEntry entry = (ViewEntry) view.getTag(); if (entry == null) return; entry.click(view, mListener); } }; private final OnClickListener mSecondaryActionClickListener = new OnClickListener() { @Override public void onClick(View view) { if (mListener == null) return; if (v == null) return; final ViewEntry entry = (ViewEntry) v.getTag(); if (view == null) return; final ViewEntry entry = (ViewEntry) view.getTag(); if (entry == null || !(entry instanceof DetailViewEntry)) return; final DetailViewEntry detailViewEntry = (DetailViewEntry) entry; final Intent intent = detailViewEntry.secondaryIntent; Loading Loading @@ -1649,14 +1683,6 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (mListener == null) return; final ViewEntry entry = mAdapter.getItem(position); if (entry == null) return; entry.click(view, mListener); } @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, view, menuInfo); Loading