Android AlertDialog 样式问题
Android AlertDialog Styling Issues
几天来,我一直在努力尝试设置 alertDialog 的样式。我一直在搜索并尝试了很多不同的方法,但仍然无法正常工作。
1) 我无法在关闭按钮上更改字体大小
2) 我无法让文本在按钮或主消息文本上水平和垂直居中
3) 有没有办法去掉方框阴影?
4) 最不重要 - 我知道我可以将主题设置为 holo.light 但我一直在尝试将消息框的背景颜色更改为白色。虽然我可以通过更改主题来做到这一点,但我想更多地了解所有这些
如果有人对这些问题有任何想法,我将不胜感激。谢谢(下面的代码)
styles.xml
<style name="G4STheme" parent="@android:style/Theme.Holo">
<item name="android:alertDialogTheme">@style/G4S.AlertDialog</item>
<item name="android:dialogTheme">@style/G4S.AlertDialog</item>
</style>
<style name="Theme_Holo_Dialog_Alert" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle_Holo</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
<style name="DialogWindowTitle_Holo">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@android:style/TextAppearance.Holo.DialogWindowTitle</item>
</style>
<style name="G4S.AlertDialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:textAppearanceMedium">@style/TextAppearance.G4S.Medium</item>
<item name="android:borderlessButtonStyle">@style/Widget.G4S.Button.Borderless</item>
<item name="android:buttonBarStyle">@style/G4S.ButtonBar.AlertDialog</item>
<item name="android:buttonStyle">@style/Widget.G4S.Button.Borderless</item>
</style>
<style name="AlertDialog_G4S">
<item name="android:fullDark">#ffffff</item>
<item name="android:topDark">#ffffff</item>
<item name="android:centerDark">#ffffff</item>
<item name="android:bottomDark">#ffffff</item>
<item name="android:fullBright">#ffffff</item>
<item name="android:topBright">#ffffff</item>
<item name="android:centerBright">#ffffff</item>
<item name="android:bottomBright">#ffffff</item>
<item name="android:bottomMedium">#ffffff</item>
<item name="android:centerMedium">#ffffff</item>
</style>
<style name="TextAppearance.G4S.DialogWindowTitle" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
<item name="android:textColor">@android:color/holo_green_light</item>
<item name="android:textStyle">bold</item>
</style>
<style name="TextAppearance.G4S.Medium" parent="@android:style/TextAppearance.Holo.Medium">
<item name="android:textSize">16sp</item>
<item name="android:minHeight">156dp</item>
<item name="android:layout_centerHorizontal">true</item>
</style>
<style name="Widget.G4S.Button.Borderless" parent="@android:style/Widget.Holo.Button.Borderless">
<item name="android:textAppearance">@style/TextAppearance.G4S.DialogButton</item>
<item name="android:textSize">40sp</item>
</style>
<style name="TextAppearance.G4S.DialogButton" parent="@android:style/TextAppearance.Holo.Medium">
<item name="android:textAllCaps">true</item>
<item name="android:textColor">#fff</item>
<item name="android:textSize">40sp</item>
</style>
<style name="G4S.ButtonBar.AlertDialog" parent="@android:style/Holo.ButtonBar.AlertDialog">
<item name="android:background">#4aa3cb</item>
<item name="android:minHeight">96dp</item>
</style>
G4SAlertDialog.java
public class G4SAlertDialog extends DialogFragment {
AlertDialog.Builder dialogBuilder;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
dialogBuilder = new AlertDialog.Builder(getActivity());
dialogBuilder.setMessage(R.string.error_login_failed)
.setNegativeButton(R.string.error_login_dialog_close, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Dialog closed
}
});
return dialogBuilder.create();
}
}
在 activity 中启动对话框:
G4SAlertDialog failModal = new G4SAlertDialog();
failModal.show(getFragmentManager(), "acknowledgements");
您可以为 AlertDialog 或 Dialog 扩充自定义布局。很简单,看看这个教程:
http://www.mkyong.com/android/android-custom-dialog-example/
创建您的 custom_dialog.xml
,然后按照教程 link 中所示编写代码。
希望对您有所帮助。
几天来,我一直在努力尝试设置 alertDialog 的样式。我一直在搜索并尝试了很多不同的方法,但仍然无法正常工作。
1) 我无法在关闭按钮上更改字体大小
2) 我无法让文本在按钮或主消息文本上水平和垂直居中
3) 有没有办法去掉方框阴影?
4) 最不重要 - 我知道我可以将主题设置为 holo.light 但我一直在尝试将消息框的背景颜色更改为白色。虽然我可以通过更改主题来做到这一点,但我想更多地了解所有这些
如果有人对这些问题有任何想法,我将不胜感激。谢谢(下面的代码)
styles.xml
<style name="G4STheme" parent="@android:style/Theme.Holo">
<item name="android:alertDialogTheme">@style/G4S.AlertDialog</item>
<item name="android:dialogTheme">@style/G4S.AlertDialog</item>
</style>
<style name="Theme_Holo_Dialog_Alert" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle_Holo</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
<style name="DialogWindowTitle_Holo">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@android:style/TextAppearance.Holo.DialogWindowTitle</item>
</style>
<style name="G4S.AlertDialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:textAppearanceMedium">@style/TextAppearance.G4S.Medium</item>
<item name="android:borderlessButtonStyle">@style/Widget.G4S.Button.Borderless</item>
<item name="android:buttonBarStyle">@style/G4S.ButtonBar.AlertDialog</item>
<item name="android:buttonStyle">@style/Widget.G4S.Button.Borderless</item>
</style>
<style name="AlertDialog_G4S">
<item name="android:fullDark">#ffffff</item>
<item name="android:topDark">#ffffff</item>
<item name="android:centerDark">#ffffff</item>
<item name="android:bottomDark">#ffffff</item>
<item name="android:fullBright">#ffffff</item>
<item name="android:topBright">#ffffff</item>
<item name="android:centerBright">#ffffff</item>
<item name="android:bottomBright">#ffffff</item>
<item name="android:bottomMedium">#ffffff</item>
<item name="android:centerMedium">#ffffff</item>
</style>
<style name="TextAppearance.G4S.DialogWindowTitle" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
<item name="android:textColor">@android:color/holo_green_light</item>
<item name="android:textStyle">bold</item>
</style>
<style name="TextAppearance.G4S.Medium" parent="@android:style/TextAppearance.Holo.Medium">
<item name="android:textSize">16sp</item>
<item name="android:minHeight">156dp</item>
<item name="android:layout_centerHorizontal">true</item>
</style>
<style name="Widget.G4S.Button.Borderless" parent="@android:style/Widget.Holo.Button.Borderless">
<item name="android:textAppearance">@style/TextAppearance.G4S.DialogButton</item>
<item name="android:textSize">40sp</item>
</style>
<style name="TextAppearance.G4S.DialogButton" parent="@android:style/TextAppearance.Holo.Medium">
<item name="android:textAllCaps">true</item>
<item name="android:textColor">#fff</item>
<item name="android:textSize">40sp</item>
</style>
<style name="G4S.ButtonBar.AlertDialog" parent="@android:style/Holo.ButtonBar.AlertDialog">
<item name="android:background">#4aa3cb</item>
<item name="android:minHeight">96dp</item>
</style>
G4SAlertDialog.java
public class G4SAlertDialog extends DialogFragment {
AlertDialog.Builder dialogBuilder;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
dialogBuilder = new AlertDialog.Builder(getActivity());
dialogBuilder.setMessage(R.string.error_login_failed)
.setNegativeButton(R.string.error_login_dialog_close, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Dialog closed
}
});
return dialogBuilder.create();
}
}
在 activity 中启动对话框:
G4SAlertDialog failModal = new G4SAlertDialog();
failModal.show(getFragmentManager(), "acknowledgements");
您可以为 AlertDialog 或 Dialog 扩充自定义布局。很简单,看看这个教程:
http://www.mkyong.com/android/android-custom-dialog-example/
创建您的 custom_dialog.xml
,然后按照教程 link 中所示编写代码。
希望对您有所帮助。