Android-Пользовательский Цвет Фона AlertDialog

Итак, я вижу, что мы можем иметь alertdialogs с серым и белым (когда setinverse...) цвет фона.

чтобы узнать, почему я проверил темы.xml sdk, проверяя его, я был приведен к drawables и там я понял, что фон alertdialog не выполняется программно, а через некоторые изображения. И эти изображения гарантируют, что есть две серые(или белые, когда обратный цвет) горизонтальные линии сверху (область заголовка) и снизу (чуть выше области кнопки) диалога, когда мы используем LayoutInflater для просто установите другой цвет фона.

Итак, мой вопрос в том, что LayoutInflator бесполезен и предполагая, что я должен подкласс alertdialog, что вы предлагаете мне сделать, чтобы создать AlertDialog с другим фоновым цветом? Что я должен переопределить?

2 ответов


вместо использования AlertDialog я использовал Диалог. Чтобы получить пользовательский вид:

1-Создайте диалоговое окно и удалите область заголовка (в противном случае вы получите пустую серую область сверху):

myDialog = new Dialog(this);
myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

2-Создайте макет в xml и установите в качестве содержимого диалога:

myDialog.setContentView(R.layout.mydialog_layout);

3-Если макет не скругленный прямоугольник, он будет пересекаться с закругленными углами диалогового окна. Итак, дизайн макета в виде округлой прямой:

in mydialog_layout.XML-код:

android:background = "@layout/mydialog_shape"

mydialog_shape.XML-код:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle" 
     > 
     <gradient android:startColor="#FF0E2E57" 
     android:endColor="#FF0E2E57" 
            android:angle="225" android:paddingLeft="20dip"/> 

    <corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" 
     android:topLeftRadius="5dp" android:topRightRadius="5dp" android:paddingLeft="20dip"/> 
</shape>

4-Добавить слушателей к кнопкам в вашей деятельности:

Button button = (Button)myDialog.findViewById(R.id.dialogcancelbutton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    myDialog.cancel();
}});

вот и все.


Я помню, что читал, что не все диалоги Android создаются одинаково. Поэтому, если вы не хотите использовать диалог, поставляемый с версией Android устройства; вам нужно закодировать совершенно новый диалог с нуля.

Edit:

Я думаю, вам нужно переопределить onCreateDialog с помощью пользовательского класса построителя диалогов. Как я уже сказал, Я никогда этого не делал. Помните, чтобы сохранить стиль Android MVC, вам также нужно определить диалог в XML. Если бы я был я, вероятно, начну с макета XML, а затем закодирую пользовательский класс dialog, используя те же методы, что и обычный класс dialog builder. Извините за неопределенность, я все еще изучаю Java и Android.