2014-04-15 9 views
0

나는 7안드로이드에서 API 레벨 7의 대화 상자에서 사용자 지정 피커 뷰를 생성하는 방법은 무엇입니까?

내가 3 수 선택기 각각의 선택기 값의 특정 집합을 가지고있는 사용자 정의 대화 상자를 엽니 다 버튼을 클릭하고 .... API 레벨에서 사용자 정의 피커 뷰를 생성하고 싶은

하지만 나는 Picker가 하나의 대화 상자에서 어떻게 작동하는지 이해하지 못합니까? 그리고 각 numberPicker의 onvaluechangeListener()를 작성하는 방법;

나는 당신이 활동을 생성하고이 방법으로 매니페스트에 그것을 테마 대화 상자를 제공 할 수 있습니다

enter image description here

답변

0

android:theme="@style/Theme.NoTitleBar.Dialog" 

또한 사용할 수 있습니다 같은 대화 상자를 표시 할 wheelview 라이브러리 그것

0
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
    // the callback received when the user "sets" the Date in the 
    // DatePickerDialog 
    public void onDateSet(DatePicker view, int yearSelected, 
      int monthOfYear, int dayOfMonth) { 
     year = yearSelected; 
     month = monthOfYear; 
     day = dayOfMonth; 
     UserDataModel.setDob(day + "-" + month + "-" + year); 
     isDOBSet = true; 
     String mon = ""; 
     switch (month) { 

     case 0: 
      mon = "Jan"; 
      break; 
     case 1: 
      mon = "Feb"; 
      break; 
     case 2: 
      mon = "Mar"; 
      break; 
     case 3: 
      mon = "Apr"; 
      break; 
     case 4: 
      mon = "May"; 
      break; 
     case 5: 
      mon = "Jun"; 
      break; 
     case 6: 
      mon = "Jul"; 
      break; 
     case 7: 
      mon = "Aug"; 
      break; 
     case 8: 
      mon = "Sep"; 
      break; 
     case 9: 
      mon = "Oct"; 
      break; 
     case 10: 
      mon = "Nov"; 
      break; 
     case 11: 
      mon = "Dec"; 
      break; 

     } 
     tv_DOB.setText(mon+" "+day+" " + year); 
     tv_DOB.setTextColor(getResources().getColor(R.color.DarkGREY)); 
     // Set the Selected Date in Select date Button 

    } 
}; 


@Override 
@Deprecated 
protected Dialog onCreateDialog(int id) { 
    // TODO Auto-generated method stub 
    switch (id) { 
    case DATE_DIALOG_ID: 
     // create a new DatePickerDialog with values you want to show 
     return new DatePickerDialog(this, mDateSetListener, mYear-20, mMonth, 
       mDay); 
    } 

    return super.onCreateDialog(id); 
} 

이 코드를 사용해보십시오 사용자 지정 선택기 대신 달력보기. 필요한 경우 필자가 요구하는 것처럼 사용자 정의 선택기를 구현 한 적이 얼마나 있는지 알려주십시오.

+0

월, 연도, 날짜를 표시하고 싶지 않습니다 ...이 선택기에 내 자신의 값을 표시하고 싶습니다. – SAndroidD

0

사용자 지정하려면 각 번호 선택기를 직접 만들어야합니다. 당신의 showPickerDialog 방법에

<NumberPicker 
    android:id="@+id/number_picker_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

: 당신의 dialog_layout.xml에서

final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    View view = mLayoutInflater.inflate(dialog_layout, null); 
    builder.setTitle(yourTitle); 
    final NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.number_picker_1); 
    hourPicker.setMaxValue(yourMaxValue); 
    hourPicker.setMinValue(yourMinValue); 
    hourPicker.setValue(yourDefaultValue); 
    hourPicker.setWrapSelectorWheel(false); 
    builder.setView(view); 
    builder.setPositiveButton(context.getString(R.string.set), new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      int value = numberPicker.getValue(); 
      /*do something with your values*/ 
      dialog.dismiss(); 
     } 
    }); 
    builder.setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    final AlertDialog dialog = builder.create(); 
    dialog.show(); 

}

0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<NumberPicker 
    android:id="@+id/inchpicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@+id/feetpicker" 
    android:layout_marginRight="54dp" /> 

<NumberPicker 
    android:id="@+id/feetpicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="54dp" 
    android:layout_marginTop="14dp" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@id/feetpicker" 
    android:layout_alignRight="@id/feetpicker" 
    android:layout_below="@+id/feetpicker" 
    android:layout_marginTop="29dp" 
    android:text=" Feet" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="@color/GREY" /> 

<TextView 
    android:id="@+id/tv_maps_selectedLocation" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView1" 
    android:layout_alignBottom="@+id/textView1" 
    android:layout_alignLeft="@id/inchpicker" 
    android:layout_alignRight="@+id/inchpicker" 
    android:text=" Inch" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="@color/GREY" /> 

<Button 
    android:id="@+id/btn_setheight" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="12dp" 
    android:background="@drawable/btn_login" 
    android:text="Set" 
    android:textColor="@color/WHITE" /> 

이 내 레이아웃 파일입니다.

이 대화 상자를 열면 원하는대로 만들 수 있습니다.

 final Dialog d = new Dialog(this); 
     d.setTitle("Pick your height"); 

     d.setContentView(R.layout.heightpickdialog); 
     Button set = (Button) d.findViewById(R.id.btn_setheight); 
     d.setCancelable(false); 

     final NumberPicker feetpick = (NumberPicker) d 
       .findViewById(R.id.feetpicker); 
     feetpick.setMaxValue(8); 
     feetpick.setMinValue(1); 
     feetpick.setValue(Integer.parseInt(feet)); 
     feetpick.setWrapSelectorWheel(false); 

     final NumberPicker inchPick = (NumberPicker) d 
       .findViewById(R.id.inchpicker); 
     inchPick.setMaxValue(11); 
     inchPick.setMinValue(0); 
     inchPick.setValue(Integer.parseInt(inch)); 
     inchPick.setWrapSelectorWheel(false); 

     d.show(); 
     set.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       feet = String.valueOf(feetpick.getValue()); 
       inch = String.valueOf(inchPick.getValue()); 
       UserDataModel.setHeight(feet + " , " + inch); 
       displayHeight(feet, inch); 
       d.dismiss(); 
      } 
     });