목록안드로이드 개발/UI관련 (7)
일모도원(日暮途遠) 개발자
AlertDialog말고 Material Dialogue를 사용해보고 싶었다. 웹싸이트를 보면 아래처럼 둥근 테두리에 디자인이 좋아 보인다. https://github.com/material-components/material-components-android/blob/master/docs/components/Dialog.md#basic-dialog 에 보면 예제가 있다. new를 붙여서 자바코드를 실행해본다. new MaterialAlertDialogBuilder(this) .setMessage("메시지") .setPositiveButton("OK", null) .setNegativeButton("취소", null) .show(); 근데 나는 왜 둥근 테두리가 안나오지? setRadius가 있으면 좋을..
다이얼로그 레이아웃에서 넓이를 match_parent로 줬는데도, 다이얼로그의 넓이가 많이 작다. 오른쪽 처럼 뷰 넓이의 90%를 만들어 보자. 넓이를 90%로 주기 위해서 아래 아래 두줄을 추가했다. 주의 할점은 dialog.show 다음에 추가해야 한다. int width = (int)(activity.getResources().getDisplayMetrics().widthPixels*0.9); dialog.getWindow().setLayout(width, ViewGroup.LayoutParams.WRAP_CONTENT); private Dialog dialog; ... dialog.show(); int width = (int)(activity.getResources().getDisplayMetri..
리스트가 600개 정도 되는데 이게 전부 다 어댑터에서 binding이 되고 있어서 무척 느리다. 삽질 끝에 소스코드가 아닌, 레이아웃쪽에 문제가 있다는걸 알았다. 원인은 아래 코드가 문제였다. 저 코드로 인해서 리사이클 뷰의 높이가 제대로 안구해져서 어댑터에서 높이에 해당되는 아이템만 바인딩하는게 아니라 리스트내의 모든 아이템을 바인딩 해서 오류가 발생했다. (왜 저코드가 문제인지는 정확히는 잘 모르겠다...) 안되는거 아래처럼 고치면 바인딩이 이슈는 해결되지만 UI문제가 생긴다. 즉 이런씩으로 BottomNavigationView가 일부 잘려져 나온다. 내경우에는 ConstraintLayout 안에 다시 ConstraintLayout으로 레이아웃을 만들지 않아도 되어서 안에서는 그냥 LinearLay..
아래처럼 채팅창을 구현하고 있다. 원하는것은 상대방 채팅일때 약간 왼쪽으로 쏠린듯한 느낌을 주게, 시작마진은 8, 끝마진은 30으로 줬다. 근데 문제는 글자가 길어지면 아래처럼 뷰의 넓이 전체를 다 사용해버린다. 상대편의 말 풍선은 시작마진은 8dp, 끝마진을 30dp로 줬지만, 끝 마진이 먹지 않는다. android:layout_marginStart="8dp" android:layout_marginEnd="30dp" 해결하는 방법은 상대편의 말 풍선은 끝마진을 주지 말고, 대신 세로 가이드 라인을 만들어서 가이드라인에 30dp를 준다. 텍스트뷰에 있는 "android:layout_marginEnd="30dp"" 는 불필요하니 삭제하고 끝 위치 제약조건을 가이드로 준다. app:layout_constra..
간만에 소스를 여니 어떤 XML은 아래처럼 뷰가 보이지 않는다. 어떤 뷰는 스패너아이콘을 눌러보니 보이는 경우가 있는데, 어떤 뷰는 스패너도 효과가 없다. 아래가 스패너 아이콘이다. (Toggle tools visibility and position) 우상단에 Design 밑에 있는 느낌표를 클릭해보면 아래처럼 뷰에 대한 워닝과 "Failed to instantiate one or more classes"라는 문구가 나온다. "Failed to instantiate one or more classes"를 눌러보면 아래처럼 메시지를 보여준다. 내 경우는 메시지에 있는 build the project를 클릭하고 다시 refresh the layout를 클릭하니 정상적으로 보였는데, 얼마후 다시 같은 증세가 ..
SVG파일을 import해서 사용할때 아래처럼 보이지 않을때가 있다. 이렇게 정상적으로 보이는 SVG파일이 Vector Asset에서 선택하면 아무것도 안보인다. issues를 눌러서 원인을 보면 아래처럼 나온다. is not supported is not supported 이는 SVG에있는 TEXT의 이슈로, 글자를 그림으로 변경해주면 된다. Sketch app에서 글씨를 선택후 Convert to Outlines를 선택한후 SVG로 만들어서 사용하면 된다. (Adobe XD에서는 Select text후 Go to Object -> Path -> Convert to Path를 하면 된다고 한다.) 그럼 SVG파일을 import할때 정상적으로 보이게 된다.
안드로이드 스튜디오의 레이아웃 에디터를 보면 오른쪽에 파란색 뷰가 하나 더있는게 보인다. 왼쪽 흰색은 디자인 뷰(Design view)이고 오른쪽 푸른색 뷰는 블루프린터 뷰(Blueprint view, 청사진 뷰)라고 한다. 상단에 보면 지도 레이어 두장이 있는 버튼있는데 여기서 디자인 뷰만 볼지, 두개 다 볼지등을 설정할수 있다. 디자인 뷰는 우리가 설정하는 대로 화면에 보이므로 직감적으로 와 닫는다. (rendered preview of your layout) 근데 블루프린트 뷰는 뷰의 아웃라인(outlines) 즉 윤곽선(輪廓線, 바퀴의 둘레 선)을 보여준다고 하는데, 무슨말인지 잘 이해가 안된다. 구글링을 해봐도 블루프린터 뷰는 외곽선을 보여주는 용도로, 필요성을 꼭 얘기하는경우가 없다. 기껏 해..