728x90
반응형
일부 View를 사용할 때 ClickListener가 적용되지 않는 경우가 있습니다.
Webview 같은경우, 메소드에 setOnClickListener가 존재하지만,
이를 적용해도 아무 작업도 할 수 없습니다.
View와 터치로 상호작용 할 경우 일부 UI의 Visible을 조절한다던가 하는 작업이 필요할 때
Listener를 붙여주어야 가능한데 난감한 경우라고 할 수 있습니다.
하지만, 간단한 방법으로 구현할 수 있으니 걱정하지 않으셔도 됩니다.
OnTouchListener를 implements 해주는것으로 OnTouchListener를 사용할 수 있습니다.
public class SomeFragment extends Fragment implements View.OnTouchListener {
View mainView;
Webview mWebview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.fragment, container, false);
mWebview = mainView.findViewById(webview);
webView.setOnTouchListener(this);
return mainView;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP: {
something();
}
}
return false;
}
}
구현방법은 아래와 같습니다.
1. View.OnTouchListener를 implements.
2. onTouch 메소드를 오버라이딩.
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
3. 오버라이딩된 onTouch내부에 하단과같이 ACTION_UP을 판단하는 부분을 구성.
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP: {
something();
}
}
return false;
}
* ACTION_UP 은 유저가 화면에 손가락을 터치한 뒤 손가락이 떨어진다면 항상 발생하게 됩니다.
4. webview등에 setOnTouchListener를 설정.
webview등의 위에 추가적인 view를 더해서 구현하는 등의 복잡한 방법을 쓰지 않더라도 간단하게 구현할 수 있습니다.
728x90
반응형
'Android > Dev' 카테고리의 다른 글
windowSoftInputMode : 키보드 입력 시의 화면조절 옵션 (0) | 2020.02.11 |
---|---|
TabLayout이 태블릿에서 작게 나타날때 (0) | 2020.02.01 |
리사이클러뷰 역순으로 출력하기 (0) | 2020.01.29 |
화면크기에 따라 일정한 비율로 크기가 자동조절되는 TextView (3) | 2019.07.13 |
Uri 로부터 파일의 실제경로 구하기/외장SD카드의 경로 얻기 (7) | 2019.04.03 |
댓글