将加载动画添加到 kotlin 中的自定义对话框
Add load animation to custom dialog in kotlin
我想将加载动画添加到自定义对话框,我可以在 java 中完成,但我在 kotlin 中执行相同操作时遇到问题,它给我以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:229)
at com.android.internal.app.AlertController.installContent(AlertController.java:234)
at android.app.AlertDialog.onCreate(AlertDialog.java:337)
at android.app.Dialog.dispatchOnCreate(Dialog.java:355)
at android.app.Dialog.show(Dialog.java:260)
at com.autodroid.demo.MainActivity.show(MainActivity.kt:66)
at com.autodroid.demo.MainActivity$onCreate.onClick(MainActivity.kt:32)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
下面是我在 kotlin 中创建对话框的代码
val dialogBuilder = AlertDialog.Builder(activity)
val inflater = activity?.layoutInflater
val dialogView = inflater?.inflate(R.layout.newly_dialog, null)
dialogBuilder.setView(dialogView)
val tvPopText = dialogView?.findViewById<View>(R.id.tvPopText) as TextView
val dBuilder = dialogBuilder.create()
//-----> Issue :(
var viewGroup = dBuilder.window.decorView
viewGroup.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.slide_down))
//-----> Issue
dBuilder.show()
任何指针将不胜感激,提前致谢:)
style.xml
<style name="yourCustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/yourCustomDialogAnimation</item>
</style>
<style name="yourCustomDialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_down</item>
<item name="android:windowExitAnimation">@anim/slide_up</item>
</style>
</resources>
如何在kotlin代码中使用
val dialogBuilder = AlertDialog.Builder(activity,R.style.yourCustomDialog)
我想将加载动画添加到自定义对话框,我可以在 java 中完成,但我在 kotlin 中执行相同操作时遇到问题,它给我以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:229)
at com.android.internal.app.AlertController.installContent(AlertController.java:234)
at android.app.AlertDialog.onCreate(AlertDialog.java:337)
at android.app.Dialog.dispatchOnCreate(Dialog.java:355)
at android.app.Dialog.show(Dialog.java:260)
at com.autodroid.demo.MainActivity.show(MainActivity.kt:66)
at com.autodroid.demo.MainActivity$onCreate.onClick(MainActivity.kt:32)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
下面是我在 kotlin 中创建对话框的代码
val dialogBuilder = AlertDialog.Builder(activity)
val inflater = activity?.layoutInflater
val dialogView = inflater?.inflate(R.layout.newly_dialog, null)
dialogBuilder.setView(dialogView)
val tvPopText = dialogView?.findViewById<View>(R.id.tvPopText) as TextView
val dBuilder = dialogBuilder.create()
//-----> Issue :(
var viewGroup = dBuilder.window.decorView
viewGroup.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.slide_down))
//-----> Issue
dBuilder.show()
任何指针将不胜感激,提前致谢:)
style.xml
<style name="yourCustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/yourCustomDialogAnimation</item>
</style>
<style name="yourCustomDialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_down</item>
<item name="android:windowExitAnimation">@anim/slide_up</item>
</style>
</resources>
如何在kotlin代码中使用
val dialogBuilder = AlertDialog.Builder(activity,R.style.yourCustomDialog)