Notice
Recent Posts
Recent Comments
Link
투케이2K
133. (TWOK/WORK) [업무 이슈] 안드로이드 SwipeRefreshLayout 새로 고침 레이아웃 사용 시 Webview 웹뷰 화면 스크롤 동작 충돌 이슈 본문
투케이2K 업무정리
133. (TWOK/WORK) [업무 이슈] 안드로이드 SwipeRefreshLayout 새로 고침 레이아웃 사용 시 Webview 웹뷰 화면 스크롤 동작 충돌 이슈
투케이2K 2025. 2. 2. 09:28[제 목]
[업무 이슈] 안드로이드 SwipeRefreshLayout 새로 고침 레이아웃 사용 시 Webview 웹뷰 화면 스크롤 동작 충돌 이슈
[내 용]
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. 안드로이드 디스플레이 화면이 작은 기기에서 웹뷰 Web 화면이 스크롤 전환 시 Android SwipeRefreshLayout 새로 고침 영역과 충돌 되어 기능 오동작 발생 이슈
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
1. 안드로이드 디스플레이 화면이 작은 디바이스에서 Webview 로드 수행 실시
2. 웹뷰의 Web 화면이 화면 사이즈에 맞게 스크롤 화면으로 전환 되어 표시 되는 것 확인
3. 웹뷰 화면을 스크롤 내린 후 > 다시 스크롤 올릴 시 SwipeRefreshLayout 과 충돌 되어 화면 스크롤이 되지 않고 웹 화면이 갱신 되는 이슈 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. SwipeRefreshLayout 과 웹뷰의 스크롤이 충돌 되지 않게 웹뷰 스크롤 이벤트 상속 받은 이후 웹 화면 Scroll Top 값이 0 인 경우만 SwipeRefreshLayout 가 동작 되도록 코드 수정
2. 예시 소스 코드 :
// [WebView 객체 생성 수행]
WebView main_webview = (WebView) findViewById(R.id.main_webview);
refreshLayout.setEnabled(true); // [초기 새로 고침 활성 지정]
// [Web 화면 내 스크롤 이벤트 감지를 위한 이벤트 리스너 등록]
main_webview.setOnScrollChangeListener(new View.OnScrollChangeListener(){ // TODO [웹뷰 스크롤 이벤트 발생 확인]
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
S_Log.w("WEB_SCROLL", ">>>>>>>>>>>>>>>>> [scrollY] :: " + String.valueOf(scrollY) + " / [scrollX] :: " + String.valueOf(scrollX) + " >>>>>>>>>>>>>>>>>");
if (scrollY == 0){ // TODO [최상단 인 경우]
refreshLayout.setEnabled(true); // [새로 고침 활성 처리]
}
else { // TODO [스크롤 화면이 내려간 경우]
refreshLayout.setEnabled(false); // [새로 고침 비활성 처리]
}
}
});
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
[안드로이드 웹뷰 SwipeRefreshLayout 및 ProgressBar 사용해 웹뷰 갱신 및 커스텀 로딩 프로그레스 생성]
https://kkh0977.tistory.com/7629
------------------------------------------------------------------------------
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments