사용자가 선택할 수있는 숫자 목록이있는 ScrollView를 만들려고합니다. 사용자가 터치하고 스크롤 한 후 손가락을 떼면 스크롤이 ScrollView의 중간에있는 항목에 "스냅"되어 출력됩니다. 내 ScrollView에는 TextView 객체가 포함 된 세로 선형 레이아웃이 포함되어 있습니다. ScrollView의 수직 크기는 약 60sp입니다.터치 한 후 ScrollView의 위치를 변경하는 방법은 무엇입니까?
나는 이것이 ACTION_UP과 함께 ScrollView.onTouch를 포함 할 것이라고 생각하지만 사용 방법을 모른다. 또한 목록의 위치를 기반으로 항목의 색인 또는 값을 가져 오는 방법이 있습니까?
감사합니다.
지금 당장 제가하고있는 일은 linearLayout을 자식으로하여 ScrollView를 만드는 것입니다. LinearLayout 내부에는 수많은 숫자 (100,125,150 ... 1000)가 있습니다. 사용자는 손가락을 터치하고 원하는 숫자가 가운데에 가장 가까운 (또는 가장 가까운) 위치로 끌 수 있습니다. 손가락을 제거한 후 ACTION_UP을 누르면 가운데에 가장 가까운 번호가 가운데로 정확히 매겨지고 (smoothScrollTo를 통해) 중간 번호가 선택되어 사용됩니다. 그게 내가하려는 일이야. – Matt
저는 지금 일종의 작업을하고 있습니다. 내가하고있는 일은 1) ACTION_UP에서 .getScrollY()를 사용하여 ScrollView의 현재 위치를 얻습니다. 2) 원하는 스크롤 위치를 얻기 위해 몇 가지 수학을 사용합니다. ((int) Math.round (posY/20) * 20) + 10 숫자 20은 항목 사이의 대략적인 거리이고 10은 중간에 대한 오프셋입니다 . 3) smoothScroll을 사용하여 이동합니다. 4)리스트에서 중간에 위치하는 숫자를 파악하기 위해 수학을 사용합니다. 5) (TextView) findViewById (R.id. (listview.getChildAt (x) .getId()))를 사용하여 텍스트보기를 얻습니다. 6) 텍스트를 int로 변환합니다. – Matt
다행니다. ListView를 사용하고 싶지 않은 이유가 있습니까? 그것은 scrollView보다 귀하의 상황에 더 적합한 것 같습니다. 또한 픽셀 수학에 의존합니까? 각기 다른 전화는 해상도가 다르므로 문제가 발생할 수 있습니다. –