How to create a Custom Dialog box in android?

后端 未结 22 2760
囚心锁ツ
囚心锁ツ 2020-11-21 07:06

I want to create a custom dialog box like below

\"enter

I have tried the foll

相关标签:
22条回答
  • 2020-11-21 07:33

    Here I have created a simple Dialog, like:

    Dialog Box

    custom_dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:background="#3E80B4"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/txt_dia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:text="Do you realy want to exit ?"
            android:textColor="@android:color/white"
            android:textSize="15dp"
            android:textStyle="bold"/>
        
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#3E80B4"
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/btn_yes"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="Yes"
                android:textColor="#5DBCD2"
                android:textStyle="bold" />
    
            <Button
                android:id="@+id/btn_no"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:layout_marginLeft="5dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="No"
                android:textColor="#5DBCD2"
                android:textStyle="bold" />
        </LinearLayout>
    
    </LinearLayout>
    

    You have to extends Dialog and implements OnClickListener

    public class CustomDialogClass extends Dialog implements
        android.view.View.OnClickListener {
    
      public Activity c;
      public Dialog d;
      public Button yes, no;
    
      public CustomDialogClass(Activity a) {
        super(a);
        // TODO Auto-generated constructor stub
        this.c = a;
      }
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.custom_dialog);
        yes = (Button) findViewById(R.id.btn_yes);
        no = (Button) findViewById(R.id.btn_no);
        yes.setOnClickListener(this);
        no.setOnClickListener(this);
    
      }
    
      @Override
      public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_yes:
          c.finish();
          break;
        case R.id.btn_no:
          dismiss();
          break;
        default:
          break;
        }
        dismiss();
      }
    }
    

    How to Call Dialog ?

    R.id.TXT_Exit:
    CustomDialogClass cdd=new CustomDialogClass(Values.this);
    cdd.show();  
    

    Updates

    After a long time one of my friends asked me to make a curved shape dialog with a transparent background. So, Here I have implemented it.

    enter image description here

    To Make a curved shape you need to create a separate curve_shap.XML as below,

    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <solid android:color="#000000" />
    
        <stroke
            android:width="2dp"
            android:color="#ffffff" />
    
        <corners
            android:bottomLeftRadius="20dp"
            android:bottomRightRadius="20dp"
            android:topLeftRadius="20dp"
            android:topRightRadius="20dp" />
    
    </shape>
    

    Now, add this curve_shap.XML in your main view Layout. In my case I have used LinearLayout

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="80dp"
            android:background="@drawable/curve_shap"
            android:orientation="vertical" >
    ...
    </LinearLayout>
    

    How to call this ?

    CustomDialogClass cdd = new CustomDialogClass(MainActivity.this);
    cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    cdd.show();
    

    I hope that works for you.

    0 讨论(0)
  • 2020-11-21 07:33

    This is an example dialog, create with xml.

    enter image description here

    the next code xml is just an example, the design or view is implemented here:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffffff">
    
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:id="@+id/a"
        android:gravity="center"
        android:background="#DA5F6A"
        android:src="@drawable/dialog_cross"
        android:scaleType="fitCenter" />
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TEXTO"
        android:id="@+id/text_dialog"
        android:layout_below="@+id/a"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="20dp"
        android:textSize="18sp"
        android:textColor="#ff000000"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal" />
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:text="OK"
        android:id="@+id/btn_dialog"
        android:gravity="center_vertical|center_horizontal"
        android:layout_below="@+id/text_dialog"
        android:layout_marginBottom="20dp"
        android:background="@drawable/btn_flat_red_selector"
        android:layout_centerHorizontal="true"
        android:textColor="#ffffffff" />
    
    </RelativeLayout>
    

    this lines of code are resources of drawable:

    android:src="@drawable/dialog_cross"
    android:background="@drawable/btn_flat_red_selector"
    

    you could do a class extends Dialog, also something like this:

    public class ViewDialog {
    
        public void showDialog(Activity activity, String msg){
            final Dialog dialog = new Dialog(activity);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setCancelable(false);
            dialog.setContentView(R.layout.dialog);
    
            TextView text = (TextView) dialog.findViewById(R.id.text_dialog);
            text.setText(msg);
    
            Button dialogButton = (Button) dialog.findViewById(R.id.btn_dialog);
            dialogButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
    
            dialog.show();
    
        }
    }
    

    finally the form of call, on your Activity for example:

    ViewDialog alert = new ViewDialog();
    alert.showDialog(getActivity(), "Error de conexión al servidor");
    

    I hope its work for you.

    0 讨论(0)
  • 2020-11-21 07:33

    You can try this simple android dialog popup library to cut the cluttered dialog code. It is very simple to use on your activity. after that you can have this code in your activity to show dialog

    Pop.on(this).with().title(R.string.title).layout(R.layout.custom_pop).show();
    

    where R.layout.custom_pop is your custom layout the way you want to decorate your dialog.

    0 讨论(0)
  • 2020-11-21 07:34

    Simplest way to create custom dialog box:

    1. Initialize and show dialog:

       ViewDialog alertDialoge = new ViewDialog();
       alertDialoge.showDialog(getActivity(), "PUT DIALOG TITLE");
      
    2. Create method:

      public class ViewDialog {
      
        public void showDialog(Activity activity, String msg) {
      
          final Dialog dialog = new Dialog(activity);
          dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
          dialog.setCancelable(false);
          dialog.setContentView(R.layout.custom_dialoge_feedback);
      
          TextView text = (TextView) dialog.findViewById(R.id.text_dialog_feedback);
          text.setText(msg);
      
          Button okButton = (Button) dialog.findViewById(R.id.btn_dialog_feedback);
          Button cancleButton = (Button) dialog.findViewById(R.id.btn_dialog_cancle_feedback);
          final EditText edittext_tv = (EditText) dialog.findViewById(R.id.dialoge_alert_text_feedback);
      
          okButton.setOnClickListener(new View.OnClickListener() {
      
              @Override
              public void onClick(View v) {
                  //Perfome Action
              }
          });
          cancleButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  dialog.dismiss();
              }
          });
      
          dialog.show();
      
          }
      }
      
    3. Create layout XML which you want or need.

    0 讨论(0)
  • 2020-11-21 07:34

    Dialog Fragment is the simplest way of creating a custom Alert Dialog.Follow the above code to create a custom view for your dialog and then implement it using Dialog Fragment. Add the following code to your layout file:

     <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:background="#3E80B4"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/txt_dia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:text="Do you realy want to exit ?"
            android:textColor="@android:color/white"
            android:textSize="15dp"
            android:textStyle="bold" />
    
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#3E80B4"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/btn_yes"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="Yes"
                android:textColor="#5DBCD2"
                android:textStyle="bold" />
    
            <Button
                android:id="@+id/btn_no"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:layout_marginLeft="5dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="No"
                android:textColor="#5DBCD2"
                android:textStyle="bold" />
        </LinearLayout>
    
    </LinearLayout>
    
    0 讨论(0)
  • 2020-11-21 07:35

    Create custom alert layout custom_aler_update.xml

    Then Copy this code to Activity :

    AlertDialog basic_reg;
    AlertDialog.Builder builder ;
    builder = new AlertDialog.Builder(ct, R.style.AppCompatAlertDialogStyle);
    LayoutInflater inflater = ((Activity) ct).getLayoutInflater();
    View v = inflater.inflate(R.layout.custom_aler_update, null);
    builder.setView(v);
    builder.setCancelable(false);
    builder.create();
    basic_reg = builder.show();
    

    Copy this code to style :

    <style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/primaryTextColor</item>
        <item name="android:background">@color/white</item>
    </style>
    
    0 讨论(0)
提交回复
热议问题