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:paddingTop="20dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:scrollbars="none"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -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>
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user