Merge "Update suggestion card layout"

This commit is contained in:
TreeHugger Robot
2018-01-18 22:02:13 +00:00
committed by Android (Google) Code Review
7 changed files with 99 additions and 40 deletions

View File

@@ -57,8 +57,6 @@
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:scrollbars="none"/>
</LinearLayout>

View File

@@ -21,7 +21,8 @@
android:layout_width="328dp"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true"
app:cardElevation="2dp">
app:cardElevation="2dp"
app:cardCornerRadius="@dimen/suggestion_card_corner_radius">
<LinearLayout
android:layout_width="match_parent"
@@ -38,7 +39,7 @@
android:id="@android:id/icon"
android:layout_width="@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_marginBottom="8dp" />
@@ -55,21 +56,23 @@
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/SuggestionCardText"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:singleLine="true"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:textAppearance="@style/TextAppearance.TileTitle"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_width="match_parent"
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" />
</LinearLayout>

View File

@@ -21,14 +21,14 @@
android:layout_width="328dp"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true"
app:cardElevation="2dp">
app:cardElevation="2dp"
app:cardCornerRadius="@dimen/suggestion_card_corner_radius">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="112dp"
android:orientation="vertical"
android:background="@android:color/white">
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
@@ -39,7 +39,7 @@
android:id="@android:id/icon"
android:layout_width="@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_marginBottom="8dp" />
@@ -56,9 +56,11 @@
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/SuggestionCardText"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.TileTitle"
android:ellipsize="marquee"
@@ -66,9 +68,11 @@
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_width="match_parent"
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" />
<Button

View File

@@ -300,11 +300,15 @@
<dimen name="suggestion_condition_header_padding_collapsed">10dp</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_two_cards">158dp</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_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>

View File

@@ -323,6 +323,15 @@
<item name="android:textColor">?android:attr/colorAccent</item>
</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"
parent="@android:style/TextAppearance.Material.Subhead">
<item name="android:fontFamily">sans-serif-medium</item>

View File

@@ -305,7 +305,8 @@ public class DashboardAdapterV2 extends RecyclerView.Adapter<DashboardAdapterV2.
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
// header anymore.
final List<Suggestion> suggestions = mDashboardData.getSuggestions();
final List<Suggestion> suggestions =
(List<Suggestion>) mDashboardData.getItemEntityByPosition(position);
final int suggestionCount = suggestions.size();
if (suggestions != null && suggestionCount > 0) {
holder.summary.setText(""+suggestionCount);

View File

@@ -56,10 +56,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
private final ArrayList<String> mSuggestionsShownLogged;
private final SuggestionControllerMixin mSuggestionControllerMixin;
private final Callback mCallback;
private final int mMultipleCardsMarginEnd;
private final int mWidthSingleCard;
private final int mWidthTwoCards;
private final int mWidthMultipleCards;
private final CardConfig mConfig;
private List<Suggestion> mSuggestions;
@@ -89,13 +86,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
if (lifecycle != null) {
lifecycle.addObserver(this);
}
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);
mConfig = CardConfig.get(context);
setHasStableIds(true);
}
@@ -116,7 +107,7 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, id);
mSuggestionsShownLogged.add(id);
}
setCardWidthAndMargin(holder, suggestionCount);
mConfig.setCardLayout(holder, suggestionCount, position);
holder.icon.setImageDrawable(mCache.getIcon(suggestion.getIcon()));
holder.title.setText(suggestion.getTitle());
holder.title.setSingleLine(suggestionCount == 1);
@@ -220,12 +211,61 @@ public class SuggestionAdapterV2 extends RecyclerView.Adapter<DashboardItemHolde
return mSuggestions;
}
private void setCardWidthAndMargin(DashboardItemHolder holder, int suggestionCount) {
final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
suggestionCount == 1
? mWidthSingleCard : suggestionCount == 2 ? mWidthTwoCards : mWidthMultipleCards,
LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMarginEnd(suggestionCount == 1 ? 0 : mMultipleCardsMarginEnd);
holder.itemView.setLayoutParams(params);
private static class CardConfig {
// Card start/end margin
private final int mMarginInner;
private final int mMarginOuter;
// Card width for different numbers of cards
private final int mWidthSingleCard;
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);
}
}
}