diff --git a/main/res/values-v22/styles.xml b/main/res/values-v22/styles.xml
index a3c7cee..b4d89b0 100644
--- a/main/res/values-v22/styles.xml
+++ b/main/res/values-v22/styles.xml
@@ -22,4 +22,10 @@
     </style>
 
     <style name="SudAlertDialogTheme.Light" parent="android:Theme.DeviceDefault.Light.Dialog.Alert" />
+    <style name="SudMaterialYouAlertDialogTheme" parent="SudAlertDialogTheme">
+        <item name="android:windowTitleStyle">@style/SudMaterialYouAlertDialogTitleStyle</item>
+    </style>
+    <style name="SudMaterialYouAlertDialogTheme.Light" parent="SudAlertDialogTheme.Light">
+        <item name="android:windowTitleStyle">@style/SudMaterialYouAlertDialogTitleStyle</item>
+    </style>
 </resources>
diff --git a/main/src/com/google/android/setupdesign/util/LayoutStyler.java b/main/src/com/google/android/setupdesign/util/LayoutStyler.java
index b377327..9e1d66b 100644
--- a/main/src/com/google/android/setupdesign/util/LayoutStyler.java
+++ b/main/src/com/google/android/setupdesign/util/LayoutStyler.java
@@ -21,8 +21,7 @@
 import android.content.res.TypedArray;
 import android.os.Build.VERSION_CODES;
 import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
+import android.view.ViewGroup;
 import androidx.annotation.Nullable;
 import com.google.android.setupcompat.partnerconfig.PartnerConfig;
 import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
@@ -121,8 +120,8 @@
       if (partnerMarginStartAvailable) {
         extraPaddingStart =
             ((int)
-                PartnerConfigHelper.get(context)
-                    .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
+                    PartnerConfigHelper.get(context)
+                        .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
                 - layoutMarginStart;
       } else {
         extraPaddingStart = view.getPaddingStart();
@@ -131,15 +130,15 @@
       if (partnerMarginEndAvailable) {
         extraPaddingEnd =
             ((int)
-                PartnerConfigHelper.get(context)
-                    .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END))
+                    PartnerConfigHelper.get(context)
+                        .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END))
                 - layoutMarginEnd;
         // If the view is a content view, padding start and padding end will be the same.
         if (view.getId() == R.id.sud_layout_content) {
           extraPaddingEnd =
               ((int)
-                  PartnerConfigHelper.get(context)
-                      .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
+                      PartnerConfigHelper.get(context)
+                          .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
                   - layoutMarginEnd;
         }
       } else {
@@ -156,8 +155,14 @@
           // The framelayout background maybe infected by this change.
           // Currently the content background is same as the activity background, and there is no
           // partner config to customize it.
-          LinearLayout.LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
-          layoutParams.setMargins(
+          ViewGroup.LayoutParams params = view.getLayoutParams();
+          ViewGroup.MarginLayoutParams marginLayoutParams;
+          if (params instanceof ViewGroup.MarginLayoutParams) {
+            marginLayoutParams = (ViewGroup.MarginLayoutParams) params;
+          } else {
+            marginLayoutParams = new ViewGroup.MarginLayoutParams(params);
+          }
+          marginLayoutParams.setMargins(
               extraPaddingStart, view.getPaddingTop(), extraPaddingEnd, view.getPaddingBottom());
         } else {
           view.setPadding(
