diff --git a/res/layout/suggestion_container.xml b/res/layout/suggestion_container.xml
index 640a91f..409f39e 100644
--- a/res/layout/suggestion_container.xml
+++ b/res/layout/suggestion_container.xml
@@ -20,7 +20,7 @@
     style="@style/SuggestionConditionStyle"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingTop="12dp"
+    android:paddingTop="10dp"
     android:orientation="vertical">
 
     <LinearLayout
@@ -55,8 +55,8 @@
         android:id="@+id/suggestion_list"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingTop="14dp"
-        android:paddingBottom="16dp"
+        android:paddingTop="12dp"
+        android:paddingBottom="13dp"
         android:scrollbars="none"/>
 
 </LinearLayout>
diff --git a/res/layout/suggestion_tile.xml b/res/layout/suggestion_tile.xml
index 79f6dca..fa3f3af 100644
--- a/res/layout/suggestion_tile.xml
+++ b/res/layout/suggestion_tile.xml
@@ -64,7 +64,7 @@
             android:layout_marginStart="12dp"
             android:layout_marginEnd="12dp"
             android:singleLine="true"
-            android:textAppearance="@style/TextAppearance.SuggestionTitleV2"
+            android:textAppearance="@style/TextAppearance.SuggestionTitle"
             android:ellipsize="end"
             android:fadingEdge="horizontal" />
 
diff --git a/res/layout/suggestion_tile_with_button.xml b/res/layout/suggestion_tile_with_button.xml
index a674bcb..de3494a 100644
--- a/res/layout/suggestion_tile_with_button.xml
+++ b/res/layout/suggestion_tile_with_button.xml
@@ -64,7 +64,7 @@
             android:layout_marginStart="12dp"
             android:layout_marginEnd="12dp"
             android:singleLine="true"
-            android:textAppearance="@style/TextAppearance.SuggestionTitleV2"
+            android:textAppearance="@style/TextAppearance.SuggestionTitle"
             android:ellipsize="end"
             android:fadingEdge="horizontal" />
 
@@ -84,6 +84,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="12dp"
+            android:layout_marginBottom="18dp"
             android:text="@string/suggestion_button_text" />
 
     </LinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 12193c4..98afa5a 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -307,7 +307,7 @@
     <dimen name="suggestion_card_width_one_card">332dp</dimen>
     <dimen name="suggestion_card_width_two_cards">162dp</dimen>
     <dimen name="suggestion_card_width_multiple_cards">156dp</dimen>
-    <dimen name="suggestion_card_outer_margin">16dp</dimen>
+    <dimen name="suggestion_card_outer_margin">14dp</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>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b672247..b436355 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -318,7 +318,6 @@
 
     <style name="TextAppearance.SuggestionHeader"
            parent="@android:style/TextAppearance.Material.Subhead">
-        <item name="android:fontFamily">@config/config_headlineFontFamilyMedium</item>
         <item name="android:textSize">14sp</item>
         <item name="android:textColor">?android:attr/colorAccent</item>
     </style>
@@ -334,12 +333,7 @@
 
     <style name="TextAppearance.SuggestionTitle"
            parent="@android:style/TextAppearance.Material.Subhead">
-        <item name="android:fontFamily">sans-serif-medium</item>
-    </style>
-
-    <style name="TextAppearance.SuggestionTitleV2"
-           parent="@android:style/TextAppearance.Material.Subhead">
-        <item name="android:fontFamily">@config/config_headlineFontFamily</item>
+        <item name="android:textSize">16sp</item>
     </style>
 
     <style name="TextAppearance.SuggestionSummary" parent="TextAppearance.Small">
@@ -474,7 +468,6 @@
 
     <style name="TextAppearance.SearchBar" parent="@android:style/TextAppearance.Material.Widget.Toolbar.Subtitle">
         <item name="android:textSize">@dimen/search_bar_text_size</item>
-        <item name="android:fontFamily">@config/config_headlineFontFamily</item>
     </style>
 
     <style name="device_info_dialog_label">
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 8646683..007b66b 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -303,8 +304,13 @@
         final List<Suggestion> suggestions =
             (List<Suggestion>) mDashboardData.getItemEntityByPosition(position);
         final int suggestionCount = suggestions.size();
+        final Typeface fontMedium = Typeface.create(
+            mContext.getString(com.android.internal.R.string.config_headlineFontFamilyMedium),
+            Typeface.NORMAL);
+        holder.title.setTypeface(fontMedium);
         if (suggestions != null && suggestionCount > 0) {
             holder.summary.setText("" + suggestionCount);
+            holder.summary.setTypeface(fontMedium);
             mSuggestionAdapter.setSuggestions(suggestions);
             holder.data.setAdapter(mSuggestionAdapter);
         }
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
index 9bcf2a2..62bc148 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
@@ -18,6 +18,7 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -122,6 +123,9 @@
         holder.icon.setImageDrawable(drawable);
         holder.title.setText(suggestion.getTitle());
         holder.title.setSingleLine(suggestionCount == 1);
+        holder.title.setTypeface(Typeface.create(
+            mContext.getString(com.android.internal.R.string.config_headlineFontFamilyMedium),
+            Typeface.NORMAL));
 
         if (suggestionCount == 1) {
             final CharSequence summary = suggestion.getSummary();
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
index 2d22e04..d25969e 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
@@ -115,6 +115,7 @@
         final View itemView = mock(View.class);
         when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
         when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
+        when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
         final DashboardAdapter.SuggestionContainerHolder holder =
             new DashboardAdapter.SuggestionContainerHolder(itemView);
 
@@ -138,6 +139,7 @@
         final View itemView = mock(View.class);
         when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
         when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
+        when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
         final DashboardAdapter.SuggestionContainerHolder holder =
             new DashboardAdapter.SuggestionContainerHolder(itemView);
         final List<Suggestion> suggestions = makeSuggestionsV2("pkg1", "pkg2", "pkg3", "pkg4");
@@ -188,6 +190,7 @@
         final View itemView = mock(View.class);
         when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
         when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
+        when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
         final DashboardAdapter.SuggestionContainerHolder holder =
             new DashboardAdapter.SuggestionContainerHolder(itemView);
 
@@ -213,6 +216,7 @@
         when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
         final TextView summary = mock(TextView.class);
         when(itemView.findViewById(android.R.id.summary)).thenReturn(summary);
+        when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
         final DashboardAdapter.SuggestionContainerHolder holder =
             new DashboardAdapter.SuggestionContainerHolder(itemView);
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
index 825aee9..fc773a7 100644
--- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
@@ -19,6 +19,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
@@ -76,7 +77,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+        mContext = spy(RuntimeEnvironment.application);
         mFeatureFactory = FakeFeatureFactory.setupForTest();
 
         final Suggestion suggestion1 = new Suggestion.Builder("id1")
@@ -136,6 +137,7 @@
         mSuggestionAdapter = new SuggestionAdapter(mContext, mSuggestionControllerMixin,
             null /* savedInstanceState */, null /* callback */, null /* lifecycle */);
         mSuggestionAdapter.setSuggestions(mOneSuggestion);
+        doReturn("sans").when(mContext).getString(anyInt());
 
         // Bind twice
         mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0);
@@ -177,6 +179,7 @@
         mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder(
             new FrameLayout(RuntimeEnvironment.application),
             mSuggestionAdapter.getItemViewType(0));
+        doReturn("sans").when(mContext).getString(anyInt());
 
         mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0);
         mSuggestionHolder.itemView.findViewById(android.R.id.primary).performClick();
