Виджет EditText отстает от скорости всплывающего окна - PullRequest
1 голос
/ 08 января 2020

Создание пустого диалогового окна с предупреждением во время компиляции и его активация во время выполнения не приводит к задержке при всплывающем окне, но как только я добавляю виджет EditText (обычный текст или многострочный текст) в ресурс xml файл макета для диалогового окна с предупреждением, он отстает от скорости всплывающего окна на 2–3 секунды.

Я попытался внести всевозможные изменения, чтобы исправить это, но безуспешно. Например, я использовал все различные контейнеры компоновки, включая contraintlayout, и изменил различные атрибуты EditTexts, но безуспешно. Эта проблема сохраняется независимо от того, создаю ли я диалог внутри фрагмента диалога или в обычном фрагменте. Я использую фреймворк android jetpack с графиком навигации и kotlin. Что я могу сделать, чтобы решить эту проблему? Спасибо.

Файл макета (фрагмент_new_category_dialog. xml)

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/dialog_new_category_constraint_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.main.NewCategoryDialogFragment">

      <EditText
        android:id="@+id/editText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

Код фрагмента

import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.EditText
import android.widget.Spinner
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment

import com.example.pomoplay.R
import kotlinx.android.synthetic.main.main_activity.*

class NewCategoryDialogFragment : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        super.onCreateDialog(savedInstanceState)

        val view =
            requireActivity().layoutInflater.inflate(R.layout.fragment_new_category_dialog, null)

        return activity?.let { it ->

            // Use the Builder class for convenient dialog construction
            val builder = AlertDialog.Builder(it)
            builder.setTitle("Testing")
                .setPositiveButton(
                    "ok"
                ) { _, id ->

                }
                .setNegativeButton("cancel") { _, id ->

                }
                .setView(view)

            builder.create()

        } ?: throw IllegalStateException("Activity cannot be null")
    }

}

1 Ответ

0 голосов
/ 09 января 2020

Я нашел решение своего вопроса. Похоже, если я создаю подписанный apk-релиз приложения в Android Studio, а затем устанавливаю его на свой телефон или эмулятор, задержка всплывающего окна исчезает. Таким образом, задержка связана с запуском отладочной версии приложения на моем телефоне. Таким образом, оно не должно отставать, когда пользователь устанавливает мое приложение из Google play.

...