Пользовательские границы AlertDialog - PullRequest
3 голосов
/ 16 сентября 2011

Я создаю собственный диалог. Пример кода:

final AlertDialog dialog;

protected AlertDialog createDialog(int dialogId) {
    AlertDialog.Builder builder;
    builder = new AlertDialog.Builder(parent);
    AlertDialog fDialog = null;

    switch(dialogId) {
        case Constants.cusDialogtId:
            builder = new AlertDialog.Builder(parent);
            builder.setTitle("Title");
            LayoutInflater inflater = (LayoutInflater)parent.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = inflater.inflate(R.layout.customdialog, null);
            builder.setView(view);
            fDialog = builder.create();
            break;
    }
    dialog = fDialog;
    return dialog;
}

Проблема в том, что когда отображается диалоговое окно, оно имеет серый фон собственного диалогового окна, верхняя и нижняя границы которого также отображаются в моем настраиваемом диалоговом окне. Есть ли способ показать только мой пользовательский вид диалога ... ???

XML-код, который я использую:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
android:background="@drawable/bgsmall" >
<EditText android:id="@+id/redeemamount"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:layout_marginTop="10dip"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:hint="Enter amount"
android:inputType="numberDecimal">
</EditText>             
<Button android:id="@+id/submitRedeemAmountButton"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:text="Submit"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:background="@drawable/buttoncorner"
android:layout_marginTop="20dip"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginBottom="20dip">
</Button>
</LinearLayout>

Ответы [ 2 ]

5 голосов
/ 16 сентября 2011

Я не думаю, что вы можете удалить границы, используя AlertDialog.Builder.

Что вы можете сделать, это создать класс CustomDialog, который расширяет Dialog и в конструкторе вашего CustomDialogвы надуваете customdialog.xml.

Также вам нужно будет создать собственный style для вашего диалога, который скрывает границы.Вот пример:

    <style
      name="CustomStyle"
      parent="android:Theme.Dialog">
      <item
          name="android:windowBackground">@color/transparent</item>
      <item
          name="android:windowContentOverlay">@null</item>
    </style>

Также определите прозрачный цвет:

   <color
      name="transparent">#00000000</color>

И вы создадите свой диалог, используя:

    CustomDialog dialog=new CustomDialog(this,R.style.CustomStyle);
2 голосов
/ 16 сентября 2011

Создайте пользовательскую тему :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
    </style> 
</resources>

и используйте ее:

builder = new AlertDialog.Builder(parent, R.style.CustomDialog);

Обновление

Конструктор выше действительно API 11+.Чтобы обойти это, вам нужно расширить AlertDialog (поскольку его конструкторы protected), а затем использовать конструктор с параметром темы.Чтобы вставить свой пользовательский вид, следуйте инструкциям здесь - трюк FrameLayout, описанный в начале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...