android - EditText 小部件滞后警报对话框弹出速度
问题描述
在编译时创建一个空的警报对话框并在运行时激活它不会导致该框弹出时没有延迟,但是只要我将 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,然后将其安装在我的手机或模拟器上,对话框弹出速度滞后就会消失。所以延迟与在我的手机上运行应用程序的调试版本有关。因此,当用户从 Google Play 安装我的应用时,它不应该滞后。
推荐阅读
- security - npm 审计是如何工作的?
- python - MS SQL 数据库到 SAS
- r - 在具有非动态 URL 的多级网站上进行 R 网络抓取
- sapui5 - Vizframe Datalabel 显示一行
- python - 如何在 django cms 3.5.3 中循环模板上的自定义插件数据
- java - 由于此错误,无法打开 rpt 文件:登录错误:ORA-01017:用户名/密码无效;登录被拒绝
- kubernetes - 无法从 Kubernetes 集群中公开 TFTP 服务
- r - 在 df 中的当前值之间插入后续值(行)
- r - 将 png 文件转换为 txt 文件
- hibernate - 保存父级时,Hibernate 不会在子表中保存父级的 id