Fixed several dialog theming issues

Change-Id: I8e83e5a35acaae63a70bef48f543e3fd82ced354
This commit is contained in:
Adam Powell
2010-11-05 20:06:02 -07:00
parent eb0699bacd
commit 3320dcd049
3 changed files with 24 additions and 11 deletions

View File

@@ -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;

View File

@@ -351,6 +351,7 @@
<eat-comment />
<attr name="alertDialogStyle" format="reference" />
<attr name="alertDialogButtonGroupStyle" format="reference" />
<attr name="alertDialogCenterButtons" format="boolean" />
<!-- ============ -->
<!-- Panel styles -->

View File

@@ -143,6 +143,7 @@
<item name="dialogTheme">@android:style/Theme.Dialog</item>
<item name="alertDialogTheme">@android:style/Theme.Dialog.Alert</item>
<item name="alertDialogButtonGroupStyle">?android:attr/buttonGroupStyle</item>
<item name="alertDialogCenterButtons">true</item>
<!-- Panel attributes -->
<item name="panelBackground">@android:drawable/menu_background</item>
@@ -590,7 +591,7 @@
</style>
<!-- @hide -->
<style name="Theme.Dialog.AppError">
<style name="Theme.Dialog.AppError" parent="Theme.Holo.Dialog">
<item name="windowFrame">@null</item>
<item name="windowTitleStyle">@android:style/DialogWindowTitle</item>
<item name="windowBackground">@android:color/transparent</item>
@@ -754,6 +755,7 @@
<item name="dialogTheme">@android:style/Theme.Holo.Dialog</item>
<item name="alertDialogTheme">@android:style/Theme.Holo.Dialog.Alert</item>
<item name="alertDialogButtonGroupStyle">@android:style/Widget.Holo.ButtonGroup.AlertDialog</item>
<item name="alertDialogCenterButtons">false</item>
<!-- Panel attributes -->
<item name="panelBackground">@android:drawable/menu_background</item>