반응형

이번 포스팅은 View 구성 시 터치 영역을 넓히는 방법에 대하여 알아보도록 하겠습니다.


Layout 구조는 아래와 같습니다.

전체 위젯을 감싸고 있는 test_parent layout 안에 test_view가 들어있는 상황입니다.


위젯의 터치영역이 너무 작아 Layout의 크기만큼 늘리고 싶을 때 아래와같이 touchDelegate를 셋팅해주면 됩니다.

View mTestLayout = rootView.findViewById(R.id.test_parent_layout); ViewGroup.LayoutParams params = mTestLayout.getLayoutParams(); mTestLayout.setTouchDelegate(

new TouchDelegate(

new Rect(0, 0, params.width, params.height),

rootView.findViewById(R.id.test_view)

)

);

위와 같이 구현을 하면 test_parent_layout 영역을 눌러도 test_view의 클릭 리스너가 호출이 됩니다.


View가 MATCH_PARENT이거나 WRAP_CONTENT일 경우, Size가 정확하게 선언되어 있지 않으므로

아래와 같이 OnGlobalLayoutListener에서 처리하는 것도 하나의 방법입니다.

rootView.findViewById(R.id.test_parent_layout).getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() {     @Override     public void onGlobalLayout() {     View mTestLayout = rootView.findViewById(R.id.test_parent_layout);     mTestLayout .setTouchDelegate(

new TouchDelegate(

                    new Rect(0, 0, mTestLayout .getWidth(), mTestLayout .getHeight()),

                    rootView.findViewById(R.id.test_view)

)

          );     } });



반응형

'Development > Android' 카테고리의 다른 글

[Android] GridLayout  (0) 2016.04.18
[Android] dp를 px값으로 변환  (0) 2016.04.14
[Android] AsyncTask 중지하기  (0) 2016.03.23
[Android] Intent로 객체 전달하기  (0) 2016.02.12
[Android] ListView 계층 구조  (0) 2015.08.11

+ Recent posts