Атрибуты стиля пользовательского стиля AlertDialog

Я пытаюсь создать свой AlertDialog, и я смог изменить большинство из них через стили и объявления xml … но есть еще несколько проблем:

  1. Как изменить область вокруг строки заголовка от черного до моего пользовательского цвета?
  2. Как изменить внешний фон на прозрачный (внешняя часть, синяя, на которую падает тень)
  3. Как изменить кнопки, чтобы они не перекрывали черную рамку вокруг предупреждающего сообщения?

AlertDialog

Вот функция, которую я имею в своей 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 , AlertDialog созданный вами макет, используйте объект Dialog для установки раздутого макета. Если вы не познакомились с раздуванием службы, сделайте некоторые исследования. После того, как вы поняли раздувание, помните, что все компоненты диалогового окна, к которому вы обращаетесь, с объектом View , который вы создали с помощью раздувания. Остальные (например, прослушиватели кликов) по-прежнему должны выполняться обычным способом. Приветствия. Я надеюсь, что это помогает.

Чтобы создать пользовательский AlertDialog, вы должны расширить DialogFragment