관계, Networking 그리고 Programming

재미있는 에러 하나. Spinner의 높이가 제대로 안 잡히네.

androbook 본캐 2014. 11. 27. 20:47

금 주에는 Mint T Wallet 의 업데이트를 위해 가열차게 달리는 중. 수정 중 다이얼로그에 Spinner를 하나 추가 할 일이 생겨서 테스트를 하는데 곤란한 일이 발생했다.


Spinner의 목록이 제법 긴 편인데, dropdown 리스트의 아래쪽 부분이 안드로이드 OS에서 사용하는 메뉴바에 가려서 보이지 않는다.


그러니까 요렇게 화면을 full로 사용하는 단말에서는 문제가 안되는데,



요렇게 화면 아래 부분을 home key등 메뉴로 사용하는 넥서스 같은 단말에서는 Spinner가 이 메뉴에 가려버려서 문제가 된다. 


더 이상한 건 어쩔 땐 이슈가 발생하고 어쩔 땐 이슈가 발생하지 않더라는 것. 테스트를 좀 더 해보니, 키패드가 떠 있는 상태에서 바로 Spinner가 있는 다이얼로그가 뜨면 이슈가 생기고, 키패드를 먼저 닫은 상태에서 다이얼로그를 열어보니 이슈가 발생하지 않는다.


아무래도 키패드가 열린 상태에서 화면 크기 계산 시 아래쪽 메뉴 부분에 대한 계산 오류가 발생하는가 보다.


그래서 소스 상에서 명시적으로 다이얼로그를 띄우기 전 키패드를 감추어주니 문제가 더 이상 발생하지 않음.


@Override

public void onClick(View v) {

// 키패드가 떠 있었던 경우 다이얼로그 내 스피너 높이가 잘못 계산되는 경우가 있음. 명시적으로 키패드를 숨김으로서 이슈 수정함.

((InputMethodManager)getSystemService( Context.INPUT_METHOD_SERVICE )).hideSoftInputFromWindow(v.getWindowToken(), 0);

// 현재 화면에 표시하고 있는 날짜로 싱크하도록 함.

DatePickerFragment dpf =  new DatePickerFragment(DATEPICKER_DIALOG_FOR_START, m_start_date, "", ""); //__temp__

dpf.show(getFragmentManager(), "start day");

}



를르릇.르릇. 버그를 수정했구낭. 이제 또또또 개발~~