我正在尝试设置我的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>
答案 0 :(得分:6)
使用您提到的所有这些属性创建自定义布局。使用Dialog
代替AlertDialog
,使您创建的布局膨胀,使用Dialog对象设置膨胀布局。如果您还没有介绍过膨胀服务,请做一些研究。在明确了充气之后,请记住使用View
对象访问的对话框的所有组件,这些组件是通过膨胀创建的。其余的(如点击听众)仍然需要按常规方式完成。干杯。我希望它有所帮助。
答案 1 :(得分:0)
要制作自定义AlertDialog,您应该扩展DialogFragment