【问题标题】:Huawei Map inside Nested Scroll嵌套滚动中的华为地图
【发布时间】:2021-02-16 18:16:43
【问题描述】:

我需要拦截触摸事件,所以我创建了一个 CustomSupportMapFragment,但从未获得 onTouchEvent,我对 GMS 版本有相同的代码并且一切正常。所以我不知道。这是我的代码:

class TCSupportMapFragment: SupportMapFragment() {
    private var mListener: OnTouchListener? = null

    override fun onCreateView(inflater: LayoutInflater, parent: ViewGroup?, savedInstanceState: Bundle?): View {
        val layout = super.onCreateView(inflater, parent, savedInstanceState)

        val frameLayout = TouchableWrapper(requireContext())
        frameLayout.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent))
        (layout as ViewGroup).addView(frameLayout, ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
        return layout
    }

    fun setListener(listener: OnTouchListener?) {
        mListener = listener
    }

    interface OnTouchListener {
        fun onTouch()
    }

    inner class TouchableWrapper(context: Context) : FrameLayout(context) {
        override fun dispatchTouchEvent(event: MotionEvent): Boolean {
            when (event.action) {
                MotionEvent.ACTION_DOWN -> mListener?.onTouch()
                MotionEvent.ACTION_UP -> mListener?.onTouch()
            }
            return super.dispatchTouchEvent(event)
        }
    }
}

活动中:

override fun onTouchListener() {
        this.binding.nestedScroll.requestDisallowInterceptTouchEvent(true)
    }

【问题讨论】:

    标签: android kotlin maps huawei-mobile-services huawei-developers


    【解决方案1】:

    您应该在执行逻辑的地方拦截触摸,而不是使用以下代码构建新的片段类型:

    View view = inflater.inflate(R.layout.fragment_test, container, false);
    
        view.setOnTouchListener(new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
    
                    if(event.getAction() == MotionEvent.ACTION_MOVE){
                        //do something
                    }
                    return true;
                }
        });
    
    //here the rest of your codereturn view;
    

    也可以参考一些类似的话题here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多