WebView, IMEOption, Ripple
웹 뷰 사용하기
- Manifest에 usesCleartextTraffic 속성 추가
android:usesCleartextTraffic ="true"
- 웹뷰 선언, 초기화
// 웹뷰 선언
private val webView: WebView by lazy{ binding.webView }
// 웹뷰 초기화
private fun initView(){
webView.apply{
webViewClient = WebViewClient() // 단말 기본 설정 앱말고 현 앱으로 웹뷰 띄우기
settings.javaScriptEnable = true // 자바 스크립트 기능 활성화
loadUrl("https://www.google.com") // http만 사용하면 에러 발생
}
}
- 웹뷰 위 주소창(EditText)에 imeOption 설정, 전체 선택 설정
android:imeOptions:="actionDone"
<!--주소창 선택시 자동 문자열 전체 선택-->
android:selectAllOnFocus="true"
- 주소창(EditText) 바인딩
// 주소창 입력시 주소 이동과 키보드 닫힘
private fun bindViews(){
addressBar.setOnEditorActionListener{ v, actionId, event ->
if(actionId == EditorInfo.IEM_ACTION_DONE){
val loadingUrl = v.text.toString()
if(URLUtill.isNetworkUrl(loadingUrl)){ // http가 붙어있다면?
webView.loadUrl(loadingUrl)
}
else{
webView.loadUrl("http://$loadingUrl")
}
}
return@setOnEditorActionListener false // 키보드 닫힘
}
}
- 뒤로가기 버튼 오버라이딩
override fun onBackPressed(){
if(webView.canGoBack()){ // 뒤로가기 가능 시
webView.goBack()
}else{
super.onBackPressed() // 기존 뒤로가기 버튼 작동
}
}
- 상단 바(주소창 좌우)의 뒤로가기, 앞으로 가기 버튼(ImageButton)에
ripple
기능 추가하기
<!-- ripple(눌림모양) 설정-->
android:background = "?attr/selectableItemBackground"
<!-- 좌우 비율 조정(constraintLayout) width:height-->
app:layout_constraintDimensionRatio ="1:1"