descendantFocusability - Child View의 Focus를 제어하자
descendantFocusability Child View의 Focus를 제어하자 ㆍ 시작하기 전에 descendantfocusablility라는 이 속성은 몇몇 특별한 상황에서 필요합니다. ㆍ 물론 사용하는 방법에 따라 유용하게 쓰일수도 있습니다..
itpangpang.xyz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | @Override public boolean onKeyUp(int keyCode, KeyEvent event){ // listView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); if(keyCode == KeyEvent.KEYCODE_F3){ button_ok.performClick(); } else if(keyCode == KeyEvent.KEYCODE_BACK){ finish(); } return false; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // listView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); final int firstListItemPosition = listView.getFirstVisiblePosition(); final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; switch (keyCode) { case KeyEvent.KEYCODE_F1: //KEYCODE_DPAD_UP mPosition--; if (mPosition < firstListItemPosition || mPosition > lastListItemPosition) { if (mPosition < 0) { //インデックスを外れた場合 if (firstListItemPosition != 0) { mPosition = lastListItemPosition; } else mPosition = 0; } else { mPosition = lastListItemPosition; } } int childIndex = mPosition - firstListItemPosition; listView.getChildAt(childIndex).requestFocusFromTouch(); listView.setSelectionFromTop(mPosition, 340); firstFocus = false; return true; case KeyEvent.KEYCODE_F2: //KEYCODE_DPAD_DOWN if (firstFocus) { listView.getChildAt(0).requestFocusFromTouch(); listView.setSelectionFromTop(0, 10); firstFocus = false; } else { mPosition++; if (mPosition < firstListItemPosition || mPosition > lastListItemPosition) { //最大インデックスを超えると if (mPosition > listView.getCount() - 1) { //ラストアイテムがフォーカスされた状態でスクロールする場合 if (lastListItemPosition != listView.getCount() - 1) { //画面上で一番上のアイテムを取得 mPosition = firstListItemPosition; } else //最大インデックス値を固定 mPosition = listView.getCount() - 1; } else { mPosition = firstListItemPosition; } } childIndex = mPosition - firstListItemPosition; listView.getChildAt(childIndex).requestFocusFromTouch(); listView.setSelectionFromTop(mPosition, 340); } return true; case KeyEvent.KEYCODE_BACK: return true; default: break; } return false; } | cs |
'Android' 카테고리의 다른 글
ListView를 scroll하면 focus가 날아가는 이슈 해결 (0) | 2021.01.22 |
---|---|
ListView 스크롤해도 button selected 유지하기 (0) | 2021.01.21 |
단말기 하드키 조작과 listview focusing (0) | 2021.01.07 |
Big decimal (0) | 2020.12.21 |
How to get a decimal point using EditText TextWatcher (0) | 2020.12.18 |
댓글