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.