From 3320dcd049700481c744d499feeecd1454afd4d7 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Fri, 5 Nov 2010 20:06:02 -0700 Subject: [PATCH] Fixed several dialog theming issues Change-Id: I8e83e5a35acaae63a70bef48f543e3fd82ced354 --- .../android/internal/app/AlertController.java | 30 ++++++++++++------- core/res/res/values/attrs.xml | 1 + core/res/res/values/themes.xml | 4 ++- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java index fefdcea2b0fea..b2810b1266aaf 100644 --- a/core/java/com/android/internal/app/AlertController.java +++ b/core/java/com/android/internal/app/AlertController.java @@ -30,6 +30,7 @@ import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -165,6 +166,13 @@ public class AlertController { } } + private static boolean shouldCenterSingleButton(Context context) { + TypedValue outValue = new TypedValue(); + context.getTheme().resolveAttribute(com.android.internal.R.attr.alertDialogCenterButtons, + outValue, true); + return outValue.data != 0; + } + public AlertController(Context context, DialogInterface di, Window window) { mContext = context; mDialogInterface = di; @@ -508,16 +516,18 @@ public class AlertController { whichButtons = whichButtons | BIT_BUTTON_NEUTRAL; } - /* - * If we only have 1 button it should be centered on the layout and - * expand to fill 50% of the available space. - */ - if (whichButtons == BIT_BUTTON_POSITIVE) { - centerButton(mButtonPositive); - } else if (whichButtons == BIT_BUTTON_NEGATIVE) { - centerButton(mButtonNeutral); - } else if (whichButtons == BIT_BUTTON_NEUTRAL) { - centerButton(mButtonNeutral); + if (shouldCenterSingleButton(mContext)) { + /* + * If we only have 1 button it should be centered on the layout and + * expand to fill 50% of the available space. + */ + if (whichButtons == BIT_BUTTON_POSITIVE) { + centerButton(mButtonPositive); + } else if (whichButtons == BIT_BUTTON_NEGATIVE) { + centerButton(mButtonNeutral); + } else if (whichButtons == BIT_BUTTON_NEUTRAL) { + centerButton(mButtonNeutral); + } } return whichButtons != 0; diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 1083452aaf65b..b22d833362be8 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -351,6 +351,7 @@ + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index e92ebba276c63..cefc039838043 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -143,6 +143,7 @@ @android:style/Theme.Dialog @android:style/Theme.Dialog.Alert ?android:attr/buttonGroupStyle + true @android:drawable/menu_background @@ -590,7 +591,7 @@ -