Android Set text in alert dialog

泄露秘密 提交于 2019-12-18 09:22:18

问题


I'm trying to create an alert dialog with an image header across the top, 2 buttons at the bottom and I want to set the text in the middle from code. However, I can't get the set text underneath the banner. I want to create something similar to the one on this link. However, the text always ends up above the image as I don't know how to reference the textview in the dialog builder. Thanks

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater inflater = getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.custom_dialog, null))
           .setMessage("Message" + message)
           .setPositiveButton("Share", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   if (isNetworkAvailable()) {
                        if (...) {...} 
                        else {...}
                   } else {...} 
               }  
           })
           .setNegativeButton("Shake again!", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
               }
           })
           .setOnCancelListener(new OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {}
           });

    AlertDialog alert = builder.create();

    alert.setOnDismissListener(new OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {}
    });

    alert.show();

The layout xml file is:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<ImageView
    android:src="@drawable/yo3"
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:scaleType="center"
    android:background="#FFFFBB33"
    android:contentDescription="@string/app_name" />

<TextView
    android:id="@+id/dialogtext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

</LinearLayout>`

回答1:


Don't set the message with the way you do it.

In your custom layout the textview you have to set is the "dialogtext" TextView. Try this...see that i get the custom view that i inflate and from that view i get the custom dialog (which you didn't actualy set before) and set the message to show after the build has taken place. Actually you can have whatever custom view you want and set each element of the view as you prefer or even handle events on it

AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();

View customView = inflater.inflate(R.layout.custom_dialog, null);
TextView messageView = (TextView)customView.findViewById(R.id.dialogtext);


builder.setView(customView)
        .setPositiveButton("Share", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {

               if (isNetworkAvailable()){

                    if (......;

                    } else {
                        ......
                    }

               } else {
                   .......;
               }    
           }  
       })
       .setNegativeButton("Shake again!", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               // User cancelled the dialog

           }

    }).setOnCancelListener(new OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {

        }
    });

messageView.SetText("Message" + message);



AlertDialog alert = builder.create();

alert.setOnDismissListener(new OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {


    }
});
alert.show();


来源:https://stackoverflow.com/questions/26474928/android-set-text-in-alert-dialog

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!