2013-05-24 3 views
5

안드로이드 Dialog에 3 numberpickers이 있습니다. 세 번째 선택 도구를 변경하면 처음에 표시된 값이 변경됩니다. pickers. I 표시된 값을 변경 여전히 시각적 래핑으로 새 값을 나타낸다안드로이드 NumberPicker는 표시된 값이 변경 될 때 값을 래핑합니다.

setWrapSelectorWheel(false) 

전화 때 I가 발견 한 (I는 처음 상기 최종 값을 볼 수있다).

피커를 터치하면 갑자기 비 랩 선택기 휠에 스냅됩니다. 어떤 이상한 것은 내가 표시된 값을 설정 한 후

getWrapSelectoWheel() 

를 호출이며 나는 그것을 설정처럼 ... false를 반환합니다. 그러나 시각적으로 잘못된 것입니다.

아이디어가 있습니까?

감사합니다.

+0

솔루션을 찾았습니까? 나는 여전히 동일한 문제를 다루고 있는데, 피커가 프로그래밍 방식으로 랩 비주얼을 다시 설정합니다. – Gabriel

답변

3

실행중인 Android 버전을 모르지만 source code for the NumberPicker (v4.2.2)을 읽어 보시기 바랍니다. 아마도 공개 메서드 중 일부를 호출하여 수행 할 수있는 개인 메서드 initializeSelectorWheelIndices에 대한 호출을 트리거해야 할 수 있습니다.

포장지를 부분적으로 바꿈으로써 피커를 사용하는 것이 약간 이상한 것 같아요. 이 행동을 일관되게하고 싶지 않아? 어떤 경우에는 최소값과 최대 값을 설정 한 다음 한 번만 두었다가 setWrapSelectorWheel 번으로 전화하십시오.

11

해결책을 찾았지만 다니엘은 올바른 방향으로 가고 있었지만 이미 값을 설정하면 initializeSelectorWheelIndices은 실제로 나쁜 것입니다. 이 때문에 값을 설정하기 전에 setMinValuesetMaxValue으로 전화해야합니다. 그러나 피커에 배열이 이미 설정되어있는 경우 setMaxValue을 현재 배열보다 높은 값으로 호출하면 ArrayIndexOutOfBounds 예외가 발생합니다.

public void updatePickerValues(String[] newValues){ 
    picker.setDisplayedValues(null); 
    picker.setMinValue(0); 
    picker.setMaxValue(newValues.length -1); 
    picker.setWrapSelectorWheel(false); 
    picker.setDisplayedValues(newValues); 
} 
+1

잘 했어. 나를 위해 일했다. –

1

을 내가 킷캣에뿐만 아니라이 문제를 확인했습니다

다음이 솔루션은 기존의 디스플레이 값을 취소하는 것입니다, 당신은 setWrapSelectorWheelsetDisplayValues를 호출 할 수 있습니다 다음 최대 값, 을 설정합니다. 그것은 버그입니다. 이전 답변 당 bug# 98319

나는 모든 설정 호출 후 setWrapSelectorWheel (false)를 마지막 통화를하는 것은 대부분의 경우에 대한 작동합니다 발견 : 기존 보고서를 찾을 수 없습니다 그래서 여기에 새로운 하나를 만들었습니다. 제 경우에는 사용자가 상호 작용하면서 NumberPicker의 한계를 동적으로 변경하고 있으며 100 % 동작하도록 할 수 없습니다. 랩 셀렉터와 함께 살고 있습니다.