我正在尝试设计我的 AlertDialog 的样式,并且我已经能够通过样式和 xml 声明更改其中的大部分内容...但仍然存在一些问题:
- 如何将标题栏周围的区域从黑色更改为我的自定义颜色?
- 如何将外部背景更改为透明(阴影落在蓝色的外部部分)
- 如何更改按钮,使其不与警报消息周围的黑色边框重叠?
这是我的 RootActivity 中的功能(我的活动扩展了这个功能)
public static void showNoConnectionDialog(Context ctx1) {
final Context ctx = ctx1;
LayoutInflater factory = LayoutInflater.from(ctx);
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ctx, R.style.SetdartDialog));
builder.setView(factory.inflate(R.layout.alert_dialog, null))
.setIcon(R.drawable.icon)
.setCancelable(true)
.setMessage(R.string.check_wireless_settings)
.setTitle(R.string.no_connection)
.setPositiveButton(R.string.myes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ctx.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
})
.setNegativeButton(R.string.mno, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
return;
}
})
.show();
}
这是来自 styles.xml 的片段
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.WhiteBackground" parent="android:Theme">
<item name="android:windowBackground">@null</item>
<item name="android:background">@android:color/white</item>
<!-- Dialog attributes
<item name="alertDialogStyle">@style/AlertDialog</item> -->
</style>
<style name="SetdartDialog">
<item name="android:background">@color/sd_blue</item> <!-- MUST HAVE with white bg-->
<!--<item name="android:windowBackground">@color/sd_blue</item> -->
<!--<item name="android:windowBackground">@color/transparent</item> needed with white bg ? -->
<item name="android:windowFrame">@color/transparent</item><!-- not sure what this changes-->
<item name="android:textColor">@android:color/black</item>
<item name="android:windowNoTitle">true</item>
<item name="android:textSize">10sp</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@color/transparent</item>
<item name="android:windowTitleStyle">@style/setwindowTitleStyle</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
<!--<item name="android:colorBackgroundCacheHint">@android:color/white</item>-->
</style>
<style name="setwindowTitleStyle">
<item name="android:textColor">@android:color/white</item>
<item name="android:background">@color/sd_blue</item>
</style>
</resources>
还有 R.layout.alert_dialog
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
使用您提到的所有这些属性创建您的自定义布局。使用Dialog
代替AlertDialog
,膨胀您创建的布局,使用Dialog对象来设置膨胀的布局。如果您还没有接触过膨胀服务,请做一些研究。当您清楚了膨胀之后,请记住您使用以下命令访问的对话框的所有组件View
对象,您通过膨胀创建的。其余的(如点击侦听器)仍然以通常的方式完成。干杯。我希望它有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)