EditText 小部件滞后警报对话框弹出速度
EditText widget lags alert dialog popup speed
在编译时创建一个空的警告对话框并在 运行 时激活它不会导致对话框弹出时出现延迟,但只要我添加一个 EditText 小部件(纯文本或多行文本)到警报对话框的 xml 资源布局文件,它使对话框弹出速度滞后 2 到 3 秒。
我尝试了各种更改来解决此问题,但没有成功。例如,我使用了所有不同的布局容器,包括 contraintlayout 并更改了 EditTexts 的各种属性,但没有成功。无论我是在对话框片段中还是在常规片段中创建对话框,此问题仍然存在。我正在使用带有导航图和 kotlin 的 android jetpack 框架。我该怎么做才能解决这个问题?谢谢
布局文件(fragment_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")
}
}
我找到了解决我自己问题的方法。似乎如果我在 Android Studio 中构建应用程序的签名版本 apk,然后将其安装在我的 phone 或模拟器上,对话框弹出速度延迟就会消失。因此,延迟与 运行 我 phone 上的应用程序调试版本有关。因此,当用户从 Google play.
安装我的应用程序时,它不应该延迟
在编译时创建一个空的警告对话框并在 运行 时激活它不会导致对话框弹出时出现延迟,但只要我添加一个 EditText 小部件(纯文本或多行文本)到警报对话框的 xml 资源布局文件,它使对话框弹出速度滞后 2 到 3 秒。
我尝试了各种更改来解决此问题,但没有成功。例如,我使用了所有不同的布局容器,包括 contraintlayout 并更改了 EditTexts 的各种属性,但没有成功。无论我是在对话框片段中还是在常规片段中创建对话框,此问题仍然存在。我正在使用带有导航图和 kotlin 的 android jetpack 框架。我该怎么做才能解决这个问题?谢谢
布局文件(fragment_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")
}
}
我找到了解决我自己问题的方法。似乎如果我在 Android Studio 中构建应用程序的签名版本 apk,然后将其安装在我的 phone 或模拟器上,对话框弹出速度延迟就会消失。因此,延迟与 运行 我 phone 上的应用程序调试版本有关。因此,当用户从 Google play.
安装我的应用程序时,它不应该延迟