lmw
2025-04-24 718f31c92e2029d05260810435a2c70cef6e6ce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.sinata.xqmuse.dialog
 
import android.content.Context
import android.view.Gravity
import android.view.KeyEvent
import android.view.WindowManager
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import androidx.core.os.bundleOf
import androidx.fragment.app.FragmentManager
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.showAllowingStateLoss
import com.sinata.xqmuse.R
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.dialog_reply.*
 
class ReplyDialog:BaseDialogFragment() {
    override fun setContentView() = R.layout.dialog_reply
 
    override fun setGravity() = Gravity.BOTTOM
 
    var callback:StringCallback? = null
 
    override fun initView() {
        et_content.hint = arguments?.getString("name")
        et_content.setOnEditorActionListener { v, actionId, event ->
            val content = et_content.text.toString()
            if ((actionId == EditorInfo.IME_ACTION_SEND||actionId == EditorInfo.IME_ACTION_UNSPECIFIED)&&event?.action?:-1 == KeyEvent.ACTION_DOWN){
                if (content.isEmpty())
                    myToast("请输入评论内容")
                else{
                    callback?.onResult(content)
                    dismissAllowingStateLoss()
                }
            }
            return@setOnEditorActionListener false
        }
        et_content.postDelayed({
            et_content.requestFocus()
            dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
            val imm = requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.showSoftInput(et_content,InputMethodManager.SHOW_IMPLICIT)
        },500)
    }
 
    companion object{
        fun show(fm: FragmentManager, name:String, callback: StringCallback){
            val editUserDialog = ReplyDialog()
            editUserDialog.arguments = bundleOf("name" to name)
            editUserDialog.callback = callback
            editUserDialog.showAllowingStateLoss(fm,"reply")
        }
    }
}