전체 글

Kotlin, Android
Android/삽질

[버그/오류]TableLayout TableRow 넘침 현상 해결

왼쪽과 같은 상황에서 table row의 요소가 화면을 나가버리는 일이 생겼다. edit text를 아래 table row에 넣을 경우 똑같이 화면을 나가버린다. 지금 parent view가 linear layout 에 width match parent인데도 이런 상황이다. 이런 버그가 일어나는 이유는 TableLayout의 기본 width setting이 wrap_content이기 때문이다. wrap_content가 그냥 위젯 크기를 감싼다는 이야기지, 위젯이 화면밖에서 벗어나지 않도록 해준다는 이야기가 아니기 때문이다. 다시 말해 고정크기가 잡히지 않아서인데, 이때 각 요소별로 weight 을 줘서 비중을 설정해주면 말끔하게 해결된다. Tablerow의 요소는 width, height를 따로 써주지 ..

Android/삽질

Bumblebee이상 버전에서 Firebase build.gradle setting(project, app)

파이어베이스 실습을 하려고 dependency들을 추가해주는데 gradle 파일을 열어보니 생김새가 전혀 달라서 당황했다. 열심히 구글링 한 결과 집어 넣는 위치가 바뀐 것이다. Arctic Fox버전까지는 이전에 쓰던 방식으로 하면 되는 것으로 알고 있고 Bumblebee버전부터 아래와 같은 적용방법을 따라야한다. json파일을 올바른 위치에 넣었다고 가정하고 보겠다. 이 블럭을 보고 우리 gradle:project를 열어보면 plugins { id 'com.android.application' version '7.1.3' apply false id 'com.android.library' version '7.1.3' apply false id 'org.jetbrains.kotlin.android' ve..

Android/삽질

layout_gravity와 gravity

몇번 헷갈려서 정리하려고 글을 쓴다. gravity는 자신에게 포함된 자식 뷰의 어디에 위치시킬지 결정한다. layout_gravity는 자신의 위치를 부모 뷰의 어디에 위치시킬지 결정한다. 이렇게 되있는 경우, 이런 결과가 나온다. gravity가 잘 안보인다. 이럴때는 width를 match_parent로 해주면 잘 보인다. 차이를 확실하게 구분하자 "댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"

Android/삽질

[버그/오류]compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다.

\compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. stackoverflow에 찾아보니 버그라고 한다. https://stackoverflow.com/questions/62082922/android-studio-r-jar-the-process-cannot-access-the-file-because-it-is-being-us Android Studio: R.jar: The process cannot access the file because it is being used by another process After a new installation of Android St..

Android/삽질

onBackPressed(), 두 번 뒤로 가기 해야 종료되는 기능

private var doubleClicked = false override fun onBackPressed() { // super.onBackPressed() if (doubleClicked == true){ finish() } doubleClicked = true Toast.makeText(this, "Click one more to exit",Toast.LENGTH_SHORT).show() Handler().postDelayed(Runnable { doubleClicked = false },1000) } 이 코드블럭은 뒤로가기버튼을 한번 누르는 것으로는 앱이 종료되지않고, 1초안에 한 번 더 뒤로가기를 한다면 앱이 종료되는 것을 구현한 것이다. 주의할 점은 override 함수이기 때문에 onCre..

Android/삽질

ListView, Adapter

안드로이드 공부의 첫번째 장벽이라고 생각한다. ListView는 Adapter를 경유해 사용한다. 아이템을 Adapter에 넣고, 그걸 ListView에 넣어서 그렇게 만들어진 ListView를 원하는 화면 xml파일에 구현하는 방식을 사용한다. import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter class ListAdapter(val List: MutableList) : BaseAdapter() { override fun getCount(): Int { TODO("Not yet implemented") } override fun getItem(p0: Int): Any { TODO("Not yet ..

kimmandooo
code