본문 바로가기

728x90
반응형

개발/AOS

(16)
[Android] Dialog 실습 - Item List Dialog Fragment 목차 1. 메소드 설명 2. 작동 화면 3. 코드 리뷰 1. 메소드 설명 Item List를 통해 Dialog에 리스트, 라디오 버튼, 그리고 체크 박스를 손쉽게 추가할 수 있다. Dialog Fragment에서 했던 것처럼 클래스의 자식 객체를 만들어 설정해준다. (생성과 관리를 별도의 영역에서 진행) 2. 작동 화면 3. 코드 리뷰 public static class ListDF extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { CharSequence[] items = {"Red", "Green", "Blue"}; boolean[] checkedItem..
[Android] Dialog 실습 - show(), Dialog Fragment 목차 1. 메소드 설명 2. 작동 화면 3. 코드 리뷰 1. 메소드 설명 Dialog를 구현하기 위해서는 show(), DialogShow(), Dialog Fragment가 있지만, DialogShow()는 더 이상 안드로이드 스튜디오에서 서비스를 제공하지 않아 두 개의 방법으로 구현해봤다. AlerDialog 클래스를 사용해야 하는데 protected로 접근이 불가능해 AlertDialog의 Builder 필드 멤버를 이용해야 한다. 2. 작동 화면 3. 코드 리뷰 Button btDialog = findViewById(R.id.btDialog); // 버튼 객체 btDialog.setOnClickListener(new View.OnClickListener() { @Override public voi..
[Android] onClick()으로 팝업 메뉴 활성화 팝업 메뉴는 OnClick() 리스너로 활성화 또는 비활성화 시키고 inflater 객체의 setOnMenuItemClick()로 적절한 이벤트를 추가할 수 있다. xml에서 onClick 속성을 사용해서 팝업 메뉴를 활성화할 수 있지만, 본 실습에서는 그렇게 하지 않았다. ibtReply는 실행 예시에 맨 아래에 있는 이미지 버튼이다. 이 이미지 버튼에 onClick 리스너를 추가해 클릭이 된다면 inflate()로 팝업 메뉴를 활성화해준다. 그런 다음 활성화된 팝업 메뉴에 대한 클릭 이벤트를 추가하기 위해 popup.setOnMenuItemClick()을 작성해야 하는데 매개변수로 클릭된 item 정보가 넘어오기 때문에 switch문에서 item.getItemId()로 item의 id를 찾아 id에 ..
[Android] Context Menu의 두 가지 모드 - Floating, Action Context Menu는 두 가지 방법으로 구현할 수 있는데 플로팅(Floating) 방식과 액션(Action) 방식이 있다. Context Menu는 Long 클릭 시 개별 뷰를 동작시키거나 갤러리와 이메일 앱처럼 평소에는 보이지 않다가 Long 클릭 시 여러 개의 체크 박스가 나오면서 선택할 수 있게 하기 위해 사용된다. 그래서 플로팅 방식은 Long 클릭 시 메뉴바를 기준으로 Context Menu가 생성되고 액션 방식은 Long 클릭 시 액션바(상단바)에 Context Menu가 생성된다. Floating Mode 플로팅 방식은 옵션 메뉴에서 구현했던 방법과 유사해서 간단하다. 이벤트 리스터 부분이 거의 비슷해 메소드명만 다르고 onCreateContextMenu()에서 여러 뷰가 적용될 수 있기..
[Android] 상단바(Action bar)에 옵션 메뉴 구현하기 메뉴의 종류로는 옵션 메뉴, 팝업 메뉴, 컨텍스트 메뉴가 있지만 오늘은 상단바(Action bar)에 옵션 메뉴를 추가해보겠다. 옵션 메뉴는 상단바에 있는 옵션 메뉴 버튼을 클릭하거나 Activity가 생성될 때 한 번만 생성된다. 그리고 Activity 당 한 개씩 구현하는데 여러 개의 Activity가 옵션 메뉴를 공유할 경유 제일 큰 부모를 상속 받아 공통적인 기능을 수행한다. 옵션 메뉴를 적용시키기 위해서 menu.xml와 같이 원하는 디자인으로 xml 생성 후에 onCreateOptionsMenu()를 통해 Activity에 inflate를 해준다. 그리고 opOptionsItemSelected()로 버튼 별 이벤트를 추가할 수 있다. onCreateOptionsMenu()에서 inflate하기..
[Android] xml이 아닌 inflate를 사용해 View 꾸미기 보통 xml 파일에서 View를 꾸미지만, java 파일에서 코드를 통해 View를 꾸미는 방법도 있다. 그러기 위해서는 inflate를 사용해야 한다. inflate를 사용하는 방법으로 두 가지가 있는데 첫번째는 LayoutInflater 객체를 사용하는 것이고 두번째는 View 클래스의 static 메소드인 inflate()를 이용하는 것이다. 두번째 방법이 더 유용하기 때문에 두번째 방법을 어떻게 사용해야 하는지 자세히 이야기해보겠다. inflate 매개변수로 xml로 디자인한 Component를 불러와 Layout에 addView() 해주면 된다. 이렇게 하면 xml마다 View를 만들어 줄 필요 없이 Component를 효율적으로 재사용할 수 있다. addView()는 LinearLayout 같..
[Android/JAVA] TableLayout으로 View 이쁘게 배치하기 TableLayout을 사용해 View가 이쁘게 배치되도록 하자. TableLayout에서 한 행을 나타내기 위해 TableRow를 사용한다. TableLayout 내에서 View가 차지하는 크기를 지정하기 위해 가로 길이 지정은 layout_span 속성을 사용하고 View의 시작 위치는 layout_column 속성으로 지정해준다. EditText 경우 layout_span을 4로 지정했기 때문에 입력창 크기가 이쁘게 길게 되어 있다. SAVE 버튼과 CANCEL 버튼도 이쁘게 배치되어 있는데 SAVE 버튼 속성에 layout_column을 3을 줬기 때문에 왼쪽에서 4번째 칸에 SAVE 버튼이 배치된다. 칸 수를 셀 때 0부터 세기 때문에 속성값을 3으로 하면 4번째 위치에 있는 것이다. CANCE..
[Android/JAVA] FrameLayout에서 View 활성화/비활성화 하기 RadioButton을 누르면 해당 하는 배경색을 가진 TextView가 동일한 위치에서 나타나게 하고 싶어 FrameLayout을 사용했다. FrameLayout은 탭 메뉴를 만들 때 유용하기 때문에 사용법을 익혀 두면 좋다. FrameLayout은 View 생성 위치가 같기 때문에 시각적으로는 맨 위에 있는 View만 보이고 Layout 안에 있는 View들은 그 아래에 겹쳐져 있다. *RadioButton 클릭 이벤트는 (2021.10.29 - [Dev./Android] - [Android] RadioButton, RadioGroup 체크 이벤트(CheckedChange) 작동) 참고. 클릭 이벤트에서 버튼 클릭시 TextView들의 visibility 속성을 True/False로 유동적으로 바꿔주..

728x90
반응형