AlertDialog не отображает значок нейтральной кнопки - PullRequest
0 голосов
/ 25 апреля 2020

Я неопытный новичок ie в android разработке. Когда мой метод создан, я отображаю диалоговое окно с предупреждением, чтобы выбрать параметры для вызываемой деятельности. Тем не менее, он не отображает значок нейтральной кнопки, но вызывает соответствующие действия. Он отображает изображение при нажатии на него. Пожалуйста, обратитесь к коду и ссылкам на изображения, приведенным ниже. Код выглядит следующим образом:

 initDialogBuilder.setCancelable(false)
                    .setTitle("Select your counter")
                    .setPositiveButtonIcon(getDrawable(R.drawable.o))
                    .setPositiveButton("",listener)
                    .setNegativeButtonIcon(getDrawable(R.drawable.x))
                    .setNegativeButton("",listener)
                    .setNeutralButtonIcon(getDrawable(R.drawable.sq))
                    .setNeutralButton("",listener)
                    .setMessage("Please select your counter.");
            AlertDialog initDialog = initDialogBuilder.create();
            initDialog.show();

Пример вывода такой: Нажмите здесь, чтобы посмотреть пример вывода с прикрепленными значками.

Однако, при удалении значка и добавлении заголовок, он показывает текст. Другой код с текстом:

initDialogBuilder.setCancelable(false)
                    .setTitle("Select your counter")
                    .setPositiveButton("X",listener)
                    .setNegativeButton("O",listener)
                    .setNeutralButton("SQ",listener)
                    .setMessage("Please select your counter.");
            AlertDialog initDialog = initDialogBuilder.create();
            initDialog.show();

Здесь выводится текст вместо значков. Нажмите здесь, чтобы увидеть пример выходных данных с текстом.

Что мне делать? Любые другие предложения по улучшению моего интерфейса? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 апреля 2020

Пожалуйста, попробуйте этот код, он отлично работает для меня

Без значка текста кнопки нетурали не виден, поэтому я добавил один пробел в текст кнопки нетурала и установил код значка кнопки после шоу dialog.check ниже код и снимок экрана

   AlertDialog.Builder builder;
    builder = new AlertDialog.Builder(this);
    //Uncomment the below code to Set the message and title from the strings.xml file
    builder.setMessage("Custom dialog with neutral button") .setTitle("Just R&D");

    //Setting message manually and performing action on button click
    builder.setMessage("Do you want to close this application ?")
            .setCancelable(false)
            .setPositiveButton("", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    finish();
                    Toast.makeText(getApplicationContext(),"you choose yes action for alertbox",
                            Toast.LENGTH_SHORT).show();
                }
            }).setPositiveButtonIcon(getDrawable(R.drawable.ic_android_black_24dp))
            .setNegativeButton("", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    //  Action for 'NO' Button
                    dialog.cancel();
                    Toast.makeText(getApplicationContext(),"you choose no action for alertbox",
                            Toast.LENGTH_SHORT).show();
                }
            }).setNegativeButtonIcon(getDrawable(R.drawable.ic_android_black_24dp)).setNeutralButton(" ", new DialogInterface.OnClickListener() { //need to add neutral button text
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    })/*.setNeutralButtonIcon(getDrawable(R.drawable.ic_android_black_24dp))*/;
    //Creating dialog box
    AlertDialog alert = builder.create();
    //Setting the title manually
    alert.setTitle("AlertDialogExample");
    alert.show();

    Button button = alert.getButton(AlertDialog.BUTTON_NEUTRAL);
    Drawable drawable = this.getResources().getDrawable(
            android.R.drawable.ic_media_play);

    // set the bounds to place the drawable a bit right
    drawable.setBounds((int) (drawable.getIntrinsicWidth() * 0.5),
            0, (int) (drawable.getIntrinsicWidth() * 1.5),
            drawable.getIntrinsicHeight());
    button.setCompoundDrawables(drawable, null, null, null);

Screen Shot

...