如何创建自定义对话框

时间:2014-06-14 21:25:08

标签: android

我的应用程序中需要一个对话框,其外观多样化,我的意思是,例如有一次我需要一个只有按钮的对话框,而另一次我需要它有2个纽扣。我也想要它的一些功能,比如它的图像根据它的使用而不同!任何人都可以建议我如何实施它? 对于我的解决方案,我搜索了一些网站,并且我在下面的链接中的代码中实现了在CustomDialogClass中实现的对话框,但是它没有显示对话框,任何人都可以帮助我。可以展示吗?

How to create a Custom Dialog box in android?

3 个答案:

答案 0 :(得分:0)

您可以为每个对话框添加不同的布局。一个按钮的一个布局,其他是按钮和图像等。

示例:

        final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.custom); //the layout of your custom dialog
        dialog.setTitle("Title...");
        dialog.show();

您可以在dialog中找到有关如何实施操作的更多信息here

答案 1 :(得分:0)

我认为您需要的是Dialog,而不是Dialog主题Activity。当发生这种情况时,每次要显示对话框时都必须启动(新)活动。

相反,您可以使用Dialog之类的:

// custom dialog
final Dialog dialog = new Dialog(context);
//specify to not display the default title/header to customize the whole layout
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.setContentView(R.layout.custom_layout_here);
// set the custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText(message);

//from the following part- buttons can be managed for your custom layout
Button dialogButton = (Button) dialog.findViewById(R.id.buttonOk);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
//if you want another button, add it here, just like the one above
//play with the visibility of button(or components) to hide or show acc to your requirement

dialog.show();

答案 2 :(得分:0)

    final Dialog d = new Dialog(DisplayUserData.this);
    d.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
    d.setContentView(R.layout.edit_msg_dialog);

    ImageView ivCross = (ImageView) d.findViewById(R.id.ivCross_msg);
    final EditText et_Message = (EditText) d.findViewById(R.id.etMessage);
    TextView tv_OK = (TextView) d.findViewById(R.id.tvOkButton);
    TextView tv_SKIP = (TextView) d.findViewById(R.id.tvSkipButton);

    tv_OK.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(et_Message.getText().toString().length()>= 40){
                Toast.makeText(getApplicationContext(),"You Can not enter                                          more then 40 characters.", Toast.LENGTH_SHORT).show();
            }else if(et_Message.getText().toString().length()< 1){
                Toast.makeText(getApplicationContext(),"Please Enter something", Toast.LENGTH_SHORT).show();
            }else {
                d.dismiss();
                msgWritten = et_Message.getText().toString();
                submittData();
            }
        }
    });

    ivCross.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            d.cancel();
        }
    });

    tv_SKIP.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            d.cancel();
            submittData(); 
        }
    });
    d.show();
    d.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

    WindowManager.LayoutParams lp = d.getWindow().getAttributes();
    lp.dimAmount = 0.7f;
    d.getWindow().setAttributes(lp);