대화 조각의 터치 이벤트를 바로 아래보기로 전달 (부모 활동 내부)

user2991413

엘

이미지에서 볼 수 있듯이 빨간색 테두리 사각형이 상위 활동입니다. 파란색은 대화 조각입니다. 원은 뷰를 나타내며 아래의 사각형은 설명입니다. 원 클릭이 버튼으로 전달되기를 원합니다. 지금까지 나는 1. Circle View에서 onTouchEvent를 재정의하고 false를 반환합니다. 2. circle view에서 setOntouchListener를 호출하고 activity.dispatchTouchListener를 호출하고 false를 반환합니다. 3. mark dialog frgament 및 circle view clickable / focusable false.

위의 어느 것도 아래 버튼의 onCLickListener를 호출하지 않는 것 같습니다. 그래도 Activity의 onIterceptTouch ()에서 터치 이벤트가 수신되는 것을 볼 수 있습니다. 도와주세요

활동

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)
        val viewTreeObserver = button2.viewTreeObserver
        viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
            override fun onGlobalLayout() {MainFragment.newInstance(button2).show(supportFragmentManager, "dialog")
                button1.viewTreeObserver.removeOnGlobalLayoutListener(this)
            }
        })

        container.setOnClickListener {
            Log.d("Test","Activity clicked")
        }
        button.setOnClickListener {
            Log.d("Test","Button Clicked")
        }
    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        Log.d("Test","Activity onTouchEvent")
        return super.onTouchEvent(event)
    }

}

대화 조각

class MainFragment : DialogFragment() {
    companion object {
        fun newInstance(view: View?) : MainFragment {
            val args = Bundle()
            val point = getRippleLocation(getViewCenterLocation(view))
            args.putInt("X", point.x)
            args.putInt("Y", point.y)
            val frag = MainFragment()
            frag.arguments = args
            return frag
        }
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View {
        return inflater.inflate(R.layout.main_fragment, container, false)

    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = super.onCreateDialog(savedInstanceState)
        dialog.window?.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
        dialog.window!!.setGravity(Gravity.START or Gravity.TOP)
        point.x = arguments!!.getInt("X")
        point.y = arguments!!.getInt("Y")
        params.x = point.x
        params.y = (point.y - 50)
        dialog.window!!.attributes = params
        return dialog
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        addRippleView(main, 0, 0)
    }

    private fun addCircleView(rootView: ViewGroup, leftMargin: Int, topMargin: Int) {
        val rippleView = BaseCircleView(context, null)
        rippleView.isClickable = false
        rippleView.isFocusable = false
        rippleView.setOnTouchListener(object : View.OnTouchListener{
            override fun onTouch(p0: View?, p1: MotionEvent?): Boolean {
                activity!!.dispatchTouchEvent(p1)
                return false
            }
        })
        configureRipple(rippleView)
        context?.resources?.let { resources ->
            rippleView.id = R.id.gather_ripple_view_id
            val params = RelativeLayout.LayoutParams(resources.getDimensionPixelSize(R.dimen.gather_on_boarding_ripple_container_width),
                    resources.getDimensionPixelSize(R.dimen.gather_on_boarding_ripple_container_height))
            params.leftMargin = leftMargin
            params.topMargin = topMargin
            rootView.addView(rippleView, params)
        }
    }

}
user2991413

누군가가 여전히이 문제로 어려움을 겪고 있다면 이것이 해결 방법입니다.

dialog?.window?.decorView?.setOnTouchListener { v, event ->
            activity?.dispatchTouchEvent(event)
            false
        }

이것은 터치 이벤트를 통해 전달합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PreviousActivity에서 활동 viewpager 내부에 여러 조각으로 의도 엑스트라를 전달하는 방법

분류에서Dev

ViewPagerAdapter의 부모에서 자식 조각으로 데이터 전달

분류에서Dev

Windows 7은 외부 모니터에서 내부 모니터 (노트북)로 전환 할 때 바탕 화면 아이콘 위치를 변경합니다.

분류에서Dev

다른 조각 내부의 맵 조각으로 인해 활동이 중단됨

분류에서Dev

활동 B에서 활동 A 조각으로 데이터 전달

분류에서Dev

모듈화 된 반짝이는 tabPanel / navbarPage 내부의 모듈로 데이터가 전달되지 않음

분류에서Dev

내 주요 활동의 부울 값을 조각으로 어떻게 전달합니까?

분류에서Dev

동적 데이터를 부트 스트랩 모달로 전달하려면

분류에서Dev

활동에서 탭 조각으로 데이터를 전달하는 Android 이벤트 버스

분류에서Dev

부트 스트랩 : 데이터를 동적으로 편집하기위한 모달 대화 상자

분류에서Dev

부트 스트랩에서 모달 대화 상자의 크기를 동적으로 조정

분류에서Dev

프로그래밍 방식으로 자동 레이아웃 : 모든 내부보기를 이동하는보기의 수직 공간 업데이트

분류에서Dev

대화 상자에서 활동으로 데이터 전달

분류에서Dev

목록보기 내부의 구성 요소를 클릭 할 때 발생하는 새 조각으로 데이터 전달

분류에서Dev

외부 모니터 용 내 날씨 표시기 바탕 화면 위젯의 위치를 자동으로 변경하는 방법

분류에서Dev

확장 가능한 목록보기의 선택된 자식보기 데이터를 조각에서 부모 활동으로 보내는 방법은 무엇입니까?

분류에서Dev

Android 활동의 조각 내부로 다시 탐색

분류에서Dev

Parcelable 개체가있는 활동 대신 조각으로 데이터 보내기

분류에서Dev

활동의 문자열 변수를 조각으로 전달

분류에서Dev

다른 하나 개의 활동으로부터 데이터를 전달하고 인쇄

분류에서Dev

활동에서 클래스 범위 조각으로 데이터 보내기

분류에서Dev

'iframe'내부의 부모로부터 URL 조각을 상속하는 방법

분류에서Dev

Joomla 2.5의 내부 모달 대화 상자에 대한 로그인 열기

분류에서Dev

부트 스트랩 모달로 데이터 전달

분류에서Dev

espresso로 선택하는 방법 : 어댑터의 항목, 활동의 프레임 레이아웃 내부 조각에 표시됩니까?

분류에서Dev

Android : 활동 내부의 조각을 다른 조각으로 바꿀 수 없습니까?

분류에서Dev

ASP.NET MVC 동적 Json 데이터를 모델로 전달하여 부분보기로 반환

분류에서Dev

부트 스트랩 모달 내부의 버튼 클릭 이벤트에서 활성 탭 ID 가져 오기

분류에서Dev

데이터 프레임의 열을 내부 함수로 전달

Related 관련 기사

  1. 1

    PreviousActivity에서 활동 viewpager 내부에 여러 조각으로 의도 엑스트라를 전달하는 방법

  2. 2

    ViewPagerAdapter의 부모에서 자식 조각으로 데이터 전달

  3. 3

    Windows 7은 외부 모니터에서 내부 모니터 (노트북)로 전환 할 때 바탕 화면 아이콘 위치를 변경합니다.

  4. 4

    다른 조각 내부의 맵 조각으로 인해 활동이 중단됨

  5. 5

    활동 B에서 활동 A 조각으로 데이터 전달

  6. 6

    모듈화 된 반짝이는 tabPanel / navbarPage 내부의 모듈로 데이터가 전달되지 않음

  7. 7

    내 주요 활동의 부울 값을 조각으로 어떻게 전달합니까?

  8. 8

    동적 데이터를 부트 스트랩 모달로 전달하려면

  9. 9

    활동에서 탭 조각으로 데이터를 전달하는 Android 이벤트 버스

  10. 10

    부트 스트랩 : 데이터를 동적으로 편집하기위한 모달 대화 상자

  11. 11

    부트 스트랩에서 모달 대화 상자의 크기를 동적으로 조정

  12. 12

    프로그래밍 방식으로 자동 레이아웃 : 모든 내부보기를 이동하는보기의 수직 공간 업데이트

  13. 13

    대화 상자에서 활동으로 데이터 전달

  14. 14

    목록보기 내부의 구성 요소를 클릭 할 때 발생하는 새 조각으로 데이터 전달

  15. 15

    외부 모니터 용 내 날씨 표시기 바탕 화면 위젯의 위치를 자동으로 변경하는 방법

  16. 16

    확장 가능한 목록보기의 선택된 자식보기 데이터를 조각에서 부모 활동으로 보내는 방법은 무엇입니까?

  17. 17

    Android 활동의 조각 내부로 다시 탐색

  18. 18

    Parcelable 개체가있는 활동 대신 조각으로 데이터 보내기

  19. 19

    활동의 문자열 변수를 조각으로 전달

  20. 20

    다른 하나 개의 활동으로부터 데이터를 전달하고 인쇄

  21. 21

    활동에서 클래스 범위 조각으로 데이터 보내기

  22. 22

    'iframe'내부의 부모로부터 URL 조각을 상속하는 방법

  23. 23

    Joomla 2.5의 내부 모달 대화 상자에 대한 로그인 열기

  24. 24

    부트 스트랩 모달로 데이터 전달

  25. 25

    espresso로 선택하는 방법 : 어댑터의 항목, 활동의 프레임 레이아웃 내부 조각에 표시됩니까?

  26. 26

    Android : 활동 내부의 조각을 다른 조각으로 바꿀 수 없습니까?

  27. 27

    ASP.NET MVC 동적 Json 데이터를 모델로 전달하여 부분보기로 반환

  28. 28

    부트 스트랩 모달 내부의 버튼 클릭 이벤트에서 활성 탭 ID 가져 오기

  29. 29

    데이터 프레임의 열을 내부 함수로 전달

뜨겁다태그

보관