2014-11-12 4 views
2

대화 상자에서 번호 선택 도구를 사용하고 스크롤 방향을 위로부터 아래로 변경하고 싶습니다. 어느 쪽이 디폴트에 의해 현재 내가 위로 스크롤하면, 숫자는 바닥 쪽에서 온다. 그러나 나는 그들이 위로부터 올 것을 원한다. 그리고 스크롤은 위쪽으로 대신에 아래쪽에있을 것이다. 여기 내 번호 선택 대화 코드입니다.번호 선택 대화 상자의 스크롤 방향을 변경하십시오.

private static void getMeasure(int textMsg, final BoardRect item, 
      final int defaultValue, final int maxValue, 
      final OnUIMeasureReadListener listener) { 
     final NumberPicker picker = new NumberPicker(
       AppContext.getActivityContext()); 
     picker.setMinValue(-1); 
     picker.setMaxValue(maxValue); 
     picker.setWrapSelectorWheel(false); 
     picker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); 

     // create actual dialog 
     final AlertDialog.Builder msgbox = new AlertDialog.Builder(
       AppContext.getActivityContext()); 

     msgbox.setCancelable(true); 
     msgbox.setTitle(AppContext.getActivityContext().getResources() 
       .getString(R.string.rect_dimen)); 
     msgbox.setMessage(textMsg); 
     msgbox.setView(picker); 

     msgbox.setPositiveButton(AppContext.getActivityContext().getResources() 
       .getString(R.string.dlg_positive_btn), 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         try { 
          listener.measureRead(picker.getValue()); 
         } catch (Exception ex) { 
         } 
        } 
       });  
     AlertDialog dialog = msgbox.create(); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes(); 

     wmlp.gravity = Gravity.BOTTOM | Gravity.RIGHT; 
     wmlp.x = 135; // x position 
     wmlp.y = 0; // y position 
     dialog.getWindow().setAttributes(wmlp); 
     dialog.show(); 
     dialog.getWindow().setLayout(350, 650); 
    } 

답변

2

방금 ​​같은 문제가있었습니다. NumberPicker 클래스의 setDisplayedValues() 메서드를 사용하여 표시 할 값을 명시 적으로 설정했습니다. OnValueChangeListener 이벤트가있을 때

picker.setDisplayValues(_displayValues); 
//we want the max value to be the index of our last value 
picker.setMaxValue(_displayValues.length - 1); 

을 : 필드 _displayValues의 배열은 다음 호출 할 수 있습니다

public String[] getDisplayValues(int minimumInclusive, int maximumInclusive) { 

    ArrayList<String> result = new ArrayList<String>(); 

    for(int i = maximumInclusive; i >= minimumInclusive; i--) { 
     result.add(Integer.toString(i)); 
    } 

    return result.toArray(new String[0]); 
} 

스토어 : 당신은 숫자의 문자열 값을 나타내는 문자열 원하는 배열을 생성 할 수 있습니다 배열에 인덱스로 newVal을 사용하십시오.

var realValue = Integer.parseInt(_displayValues[newVal]); 

희망이 있습니다.

+1

예, 이미 동일했습니다. 방법 고마워. –