Подтвердить что ты не робот

Сделать Android-активность похожей на диалог

Я пытаюсь открыть диалог щелчка виджета. Я решил проблему скинирования активности, запущенной при нажатии android:theme="@android:style/Theme.Dialog". К сожалению, я не могу достичь одного и того же вида диалога.

Это результат:

Диалог от виджета

Вместо этого я хотел бы достичь этого результата (за исключением кнопки, конечно):

Желаемый диалог из виджета

(диалоговое окно виджета, которое вы видите, удерживая экран нажатым)

Как вы можете видеть, есть некоторые отличия: цвет элементов списка, цвет текста и разделитель элемента списка. Есть ли предопределенная тема/стиль для получения одинакового внешнего вида стандартного диалога? Если нет, каковы шаги для достижения этого результата?

Я видел, что виджет, предоставленный FoxyRing, имеет поведение, которое я хотел бы иметь.

4b9b3361

Ответ 1

Почему бы не использовать "традиционную" основную деятельность с прозрачной компоновкой фона

и вызвать из него стандартный диалог?

... хорошо, если бы я понял вас правильно, это сделало бы трюк очень простым способом, не так ли?

Ответ 2

вы можете динамически создать диалоговое окно следующим образом:

        Context mContext = this;
        Dialog dialog = new Dialog(mContext);

        dialog.setContentView(R.layout.data_dialog);
        dialog.setTitle("Your title");

        AlertDialog.Builder builder;
        AlertDialog alertDialog;

        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.data_dialog,
                (ViewGroup) findViewById(R.id.AbsoluteLayout01));

        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);
        alertDialog = builder.create();
        alertDialog.show();

        final EditText txtUsername = (EditText) layout.findViewById(R.id.txtUsername);

        final AlertDialog thisDialog = alertDialog;

         Button btnSave = (Button) layout.findViewById(R.id.btnSave);
         btnSave.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {

                String strtxtUsername = txtUsername.getText().toString();

                //do something...

             }
         });                

Чтобы закрыть диалоговое окно, вызовите thisDialog.dismiss();

Стиль выглядит как обычный Theme.Light.NoTitleBar с ListView с иконкой и титром-текстом.

Надеюсь, что это поможет!

Ответ 3

На самом деле существует гораздо более простой способ сделать это, чем то, что я предложил ниже.
Посмотри на: https://developer.android.com/guide/topics/ui/dialogs.html под заголовком "Добавление списка".