OSDN Git Service

Fix layout height for suggestion tile.
authorDoris Ling <dling@google.com>
Wed, 7 Mar 2018 23:04:11 +0000 (15:04 -0800)
committerDoris Ling <dling@google.com>
Wed, 7 Mar 2018 23:04:11 +0000 (15:04 -0800)
- set minHeight instead of using a fix height, so that when the
font/display size is set to larger, the height will expand accordingly
to fit all elements in the suggestion card.

- revert the change that tint all suggestion icons. The previous logic
should be used to determine if we should tint the icon or not.

Change-Id: I2451490130cee216ff65301a600eb91d2e65c321
Fixes: 74261827
Test: visual and make RunSettingsRoboTests

res/layout/suggestion_tile.xml
res/layout/suggestion_tile_with_button.xml
src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java

index 9493e2d..0465b19 100644 (file)
@@ -29,7 +29,8 @@
 
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="112dp"
+        android:layout_height="wrap_content"
+        android:minHeight="112dp"
         android:paddingBottom="8dp"
         android:orientation="vertical">
 
index 7b9ddf9..7cb834a 100644 (file)
@@ -29,7 +29,8 @@
 
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="160dp"
+        android:layout_height="wrap_content"
+        android:minHeight="160dp"
         android:orientation="vertical">
 
         <RelativeLayout
index 4c1e939..13fcb1b 100644 (file)
@@ -119,7 +119,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter<DashboardItemHolder>
         }
         final Icon icon = suggestion.getIcon();
         final Drawable drawable = mCache.getIcon(icon);
-        if (drawable != null) {
+        if (drawable != null && (suggestion.getFlags() & Suggestion.FLAG_ICON_TINTABLE) != 0) {
             drawable.setTint(Utils.getColorAccent(mContext));
         }
         holder.icon.setImageDrawable(drawable);
index fc34724..533d4e9 100644 (file)
@@ -231,12 +231,40 @@ public class SuggestionAdapterTest {
     }
 
     @Test
-    public void onBindViewHolder_shouldTintIcon() throws PendingIntent.CanceledException {
+    public void onBindViewHolder_iconNotTintable_shouldNotTintIcon()
+            throws PendingIntent.CanceledException {
+        final Icon icon = mock(Icon.class);
+        final Suggestion suggestion = new Suggestion.Builder("pkg1")
+            .setPendingIntent(mock(PendingIntent.class))
+            .setIcon(icon)
+            .build();
+        final List<Suggestion> suggestions = new ArrayList<>();
+        suggestions.add(suggestion);
+        mSuggestionAdapter = new SuggestionAdapter(mActivity, mSuggestionControllerMixin,
+            null /* savedInstanceState */, null /* callback */, null /* lifecycle */);
+        mSuggestionAdapter.setSuggestions(suggestions);
+        mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder(
+            new FrameLayout(RuntimeEnvironment.application),
+            mSuggestionAdapter.getItemViewType(0));
+        IconCache cache = mock(IconCache.class);
+        final Drawable drawable = mock(Drawable.class);
+        when(cache.getIcon(icon)).thenReturn(drawable);
+        ReflectionHelpers.setField(mSuggestionAdapter, "mCache", cache);
+
+        mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0);
+
+        verify(drawable, never()).setTint(anyInt());
+    }
+
+    @Test
+    public void onBindViewHolder_iconTintable_shouldTintIcon()
+            throws PendingIntent.CanceledException {
         final Icon icon = mock(Icon.class);
         final int FLAG_ICON_TINTABLE = 1 << 1;
         final Suggestion suggestion = new Suggestion.Builder("pkg1")
             .setPendingIntent(mock(PendingIntent.class))
             .setIcon(icon)
+            .setFlags(FLAG_ICON_TINTABLE)
             .build();
         final List<Suggestion> suggestions = new ArrayList<>();
         suggestions.add(suggestion);