Merge "Update suggestion card layout"
This commit is contained in:
committed by
Android (Google) Code Review
commit
bdade7d49a
@@ -57,8 +57,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="20dp"
|
android:paddingTop="20dp"
|
||||||
android:paddingBottom="16dp"
|
android:paddingBottom="16dp"
|
||||||
android:paddingStart="16dp"
|
|
||||||
android:paddingEnd="16dp"
|
|
||||||
android:scrollbars="none"/>
|
android:scrollbars="none"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@@ -21,7 +21,8 @@
|
|||||||
android:layout_width="328dp"
|
android:layout_width="328dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:cardElevation="2dp">
|
app:cardElevation="2dp"
|
||||||
|
app:cardCornerRadius="@dimen/suggestion_card_corner_radius">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -38,7 +39,7 @@
|
|||||||
android:id="@android:id/icon"
|
android:id="@android:id/icon"
|
||||||
android:layout_width="@dimen/dashboard_tile_image_size"
|
android:layout_width="@dimen/dashboard_tile_image_size"
|
||||||
android:layout_height="@dimen/dashboard_tile_image_size"
|
android:layout_height="@dimen/dashboard_tile_image_size"
|
||||||
android:layout_centerHorizontal = "true"
|
style="@style/SuggestionCardIcon"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginBottom="8dp" />
|
android:layout_marginBottom="8dp" />
|
||||||
|
|
||||||
@@ -55,21 +56,23 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@android:id/title"
|
android:id="@android:id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
style="@style/SuggestionCardText"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:layout_marginLeft="12dp"
|
|
||||||
android:layout_marginRight="12dp"
|
|
||||||
android:textAppearance="@style/TextAppearance.TileTitle"
|
android:textAppearance="@style/TextAppearance.TileTitle"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
android:fadingEdge="horizontal" />
|
android:fadingEdge="horizontal" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@android:id/summary"
|
android:id="@android:id/summary"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
style="@style/SuggestionCardText"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
android:textAppearance="@style/TextAppearance.SuggestionSummary" />
|
android:textAppearance="@style/TextAppearance.SuggestionSummary" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@@ -21,14 +21,14 @@
|
|||||||
android:layout_width="328dp"
|
android:layout_width="328dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:cardElevation="2dp">
|
app:cardElevation="2dp"
|
||||||
|
app:cardCornerRadius="@dimen/suggestion_card_corner_radius">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="112dp"
|
android:minHeight="112dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical">
|
||||||
android:background="@android:color/white">
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
android:id="@android:id/icon"
|
android:id="@android:id/icon"
|
||||||
android:layout_width="@dimen/dashboard_tile_image_size"
|
android:layout_width="@dimen/dashboard_tile_image_size"
|
||||||
android:layout_height="@dimen/dashboard_tile_image_size"
|
android:layout_height="@dimen/dashboard_tile_image_size"
|
||||||
android:layout_centerHorizontal = "true"
|
style="@style/SuggestionCardIcon"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginBottom="8dp" />
|
android:layout_marginBottom="8dp" />
|
||||||
|
|
||||||
@@ -56,9 +56,11 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@android:id/title"
|
android:id="@android:id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
style="@style/SuggestionCardText"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="@style/TextAppearance.TileTitle"
|
android:textAppearance="@style/TextAppearance.TileTitle"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
@@ -66,9 +68,11 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@android:id/summary"
|
android:id="@android:id/summary"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
style="@style/SuggestionCardText"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
android:textAppearance="@style/TextAppearance.SuggestionSummary" />
|
android:textAppearance="@style/TextAppearance.SuggestionSummary" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@@ -300,11 +300,15 @@
|
|||||||
<dimen name="suggestion_condition_header_padding_collapsed">10dp</dimen>
|
<dimen name="suggestion_condition_header_padding_collapsed">10dp</dimen>
|
||||||
<dimen name="suggestion_condition_header_padding_expanded">5dp</dimen>
|
<dimen name="suggestion_condition_header_padding_expanded">5dp</dimen>
|
||||||
|
|
||||||
<!-- Suggestion cards-->
|
<!-- Suggestion cards size and padding -->
|
||||||
<dimen name="suggestion_card_width_one_card">328dp</dimen>
|
<dimen name="suggestion_card_width_one_card">328dp</dimen>
|
||||||
<dimen name="suggestion_card_width_two_cards">158dp</dimen>
|
<dimen name="suggestion_card_width_two_cards">158dp</dimen>
|
||||||
<dimen name="suggestion_card_width_multiple_cards">152dp</dimen>
|
<dimen name="suggestion_card_width_multiple_cards">152dp</dimen>
|
||||||
<dimen name="suggestion_card_margin_end">12dp</dimen>
|
<dimen name="suggestion_card_outer_margin">16dp</dimen>
|
||||||
|
<dimen name="suggestion_card_inner_margin">12dp</dimen>
|
||||||
<dimen name="suggestion_card_padding_bottom_one_card">16dp</dimen>
|
<dimen name="suggestion_card_padding_bottom_one_card">16dp</dimen>
|
||||||
|
<dimen name="suggestion_card_corner_radius">2dp</dimen>
|
||||||
|
<dimen name="suggestion_card_title_padding_bottom_one_card">6dp</dimen>
|
||||||
|
<dimen name="suggestion_card_title_padding_bottom_multiple_cards">8dp</dimen>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -323,6 +323,15 @@
|
|||||||
<item name="android:textColor">?android:attr/colorAccent</item>
|
<item name="android:textColor">?android:attr/colorAccent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="SuggestionCardText">
|
||||||
|
<item name="android:textAlignment">viewStart</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="SuggestionCardIcon">
|
||||||
|
<item name="android:layout_centerHorizontal">false</item>
|
||||||
|
<item name="android:layout_alignParentStart">true</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.SuggestionTitle"
|
<style name="TextAppearance.SuggestionTitle"
|
||||||
parent="@android:style/TextAppearance.Material.Subhead">
|
parent="@android:style/TextAppearance.Material.Subhead">
|
||||||
<item name="android:fontFamily">sans-serif-medium</item>
|
<item name="android:fontFamily">sans-serif-medium</item>
|
||||||
|
@@ -305,7 +305,8 @@ public class DashboardAdapterV2 extends RecyclerView.Adapter<DashboardAdapterV2.
|
|||||||
void onBindSuggestion(final SuggestionContainerHolder holder, int position) {
|
void onBindSuggestion(final SuggestionContainerHolder holder, int position) {
|
||||||
// If there is suggestions to show, it will be at position 0 as we don't show the suggestion
|
// If there is suggestions to show, it will be at position 0 as we don't show the suggestion
|
||||||
// header anymore.
|
// header anymore.
|
||||||
final List<Suggestion> suggestions = mDashboardData.getSuggestions();
|
final List<Suggestion> suggestions =
|
||||||
|
(List<Suggestion>) mDashboardData.getItemEntityByPosition(position);
|
||||||
final int suggestionCount = suggestions.size();
|
final int suggestionCount = suggestions.size();
|
||||||
if (suggestions != null && suggestionCount > 0) {
|
if (suggestions != null && suggestionCount > 0) {
|
||||||
holder.summary.setText(""+suggestionCount);
|
holder.summary.setText(""+suggestionCount);
|
||||||
|
@@ -56,10 +56,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
|
|||||||
private final ArrayList<String> mSuggestionsShownLogged;
|
private final ArrayList<String> mSuggestionsShownLogged;
|
||||||
private final SuggestionControllerMixin mSuggestionControllerMixin;
|
private final SuggestionControllerMixin mSuggestionControllerMixin;
|
||||||
private final Callback mCallback;
|
private final Callback mCallback;
|
||||||
private final int mMultipleCardsMarginEnd;
|
private final CardConfig mConfig;
|
||||||
private final int mWidthSingleCard;
|
|
||||||
private final int mWidthTwoCards;
|
|
||||||
private final int mWidthMultipleCards;
|
|
||||||
|
|
||||||
private List<Suggestion> mSuggestions;
|
private List<Suggestion> mSuggestions;
|
||||||
|
|
||||||
@@ -89,13 +86,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
|
|||||||
if (lifecycle != null) {
|
if (lifecycle != null) {
|
||||||
lifecycle.addObserver(this);
|
lifecycle.addObserver(this);
|
||||||
}
|
}
|
||||||
|
mConfig = CardConfig.get(context);
|
||||||
final Resources res = mContext.getResources();
|
|
||||||
mMultipleCardsMarginEnd = res.getDimensionPixelOffset(R.dimen.suggestion_card_margin_end);
|
|
||||||
mWidthSingleCard = res.getDimensionPixelOffset(R.dimen.suggestion_card_width_one_card);
|
|
||||||
mWidthTwoCards = res.getDimensionPixelOffset(R.dimen.suggestion_card_width_two_cards);
|
|
||||||
mWidthMultipleCards =
|
|
||||||
res.getDimensionPixelOffset(R.dimen.suggestion_card_width_multiple_cards);
|
|
||||||
|
|
||||||
setHasStableIds(true);
|
setHasStableIds(true);
|
||||||
}
|
}
|
||||||
@@ -116,7 +107,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
|
|||||||
mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, id);
|
mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, id);
|
||||||
mSuggestionsShownLogged.add(id);
|
mSuggestionsShownLogged.add(id);
|
||||||
}
|
}
|
||||||
setCardWidthAndMargin(holder, suggestionCount);
|
mConfig.setCardLayout(holder, suggestionCount, position);
|
||||||
holder.icon.setImageDrawable(mCache.getIcon(suggestion.getIcon()));
|
holder.icon.setImageDrawable(mCache.getIcon(suggestion.getIcon()));
|
||||||
holder.title.setText(suggestion.getTitle());
|
holder.title.setText(suggestion.getTitle());
|
||||||
holder.title.setSingleLine(suggestionCount == 1);
|
holder.title.setSingleLine(suggestionCount == 1);
|
||||||
@@ -220,12 +211,61 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
|
|||||||
return mSuggestions;
|
return mSuggestions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setCardWidthAndMargin(DashboardItemHolder holder, int suggestionCount) {
|
private static class CardConfig {
|
||||||
final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
// Card start/end margin
|
||||||
suggestionCount == 1
|
private final int mMarginInner;
|
||||||
? mWidthSingleCard : suggestionCount == 2 ? mWidthTwoCards : mWidthMultipleCards,
|
private final int mMarginOuter;
|
||||||
LinearLayout.LayoutParams.WRAP_CONTENT);
|
// Card width for different numbers of cards
|
||||||
params.setMarginEnd(suggestionCount == 1 ? 0 : mMultipleCardsMarginEnd);
|
private final int mWidthSingleCard;
|
||||||
holder.itemView.setLayoutParams(params);
|
private final int mWidthTwoCards;
|
||||||
|
private final int mWidthMultipleCards;
|
||||||
|
// padding between icon and title
|
||||||
|
private final int mPaddingTitleTopSingleCard;
|
||||||
|
private final int mPaddingTitleTopMultipleCards;
|
||||||
|
|
||||||
|
private static CardConfig sConfig;
|
||||||
|
|
||||||
|
private CardConfig(Context context) {
|
||||||
|
final Resources res = context.getResources();
|
||||||
|
mMarginInner =
|
||||||
|
res.getDimensionPixelOffset(R.dimen.suggestion_card_inner_margin);
|
||||||
|
mMarginOuter =
|
||||||
|
res.getDimensionPixelOffset(R.dimen.suggestion_card_outer_margin);
|
||||||
|
mWidthSingleCard = res.getDimensionPixelOffset(R.dimen.suggestion_card_width_one_card);
|
||||||
|
mWidthTwoCards = res.getDimensionPixelOffset(R.dimen.suggestion_card_width_two_cards);
|
||||||
|
mWidthMultipleCards =
|
||||||
|
res.getDimensionPixelOffset(R.dimen.suggestion_card_width_multiple_cards);
|
||||||
|
mPaddingTitleTopSingleCard =
|
||||||
|
res.getDimensionPixelOffset(R.dimen.suggestion_card_title_padding_bottom_one_card);
|
||||||
|
mPaddingTitleTopMultipleCards = res.getDimensionPixelOffset(
|
||||||
|
R.dimen.suggestion_card_title_padding_bottom_multiple_cards);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CardConfig get(Context context) {
|
||||||
|
if (sConfig == null) {
|
||||||
|
sConfig = new CardConfig(context);
|
||||||
|
}
|
||||||
|
return sConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setCardLayout(DashboardItemHolder holder, int suggestionCount,
|
||||||
|
int position) {
|
||||||
|
final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||||
|
suggestionCount == 1
|
||||||
|
? mWidthSingleCard : suggestionCount == 2
|
||||||
|
? mWidthTwoCards : mWidthMultipleCards,
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
if (suggestionCount == 1) {
|
||||||
|
params.setMarginStart(mMarginOuter);
|
||||||
|
params.setMarginEnd(mMarginOuter);
|
||||||
|
} else {
|
||||||
|
params.setMarginStart(
|
||||||
|
position == 0 ? mMarginOuter : mMarginInner);
|
||||||
|
params.setMarginEnd(position == suggestionCount - 1 ? mMarginOuter : 0);
|
||||||
|
}
|
||||||
|
holder.itemView.setLayoutParams(params);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user