2017-02-12 8 views
0

캘린더 대신 모드 회 전자를 사용하여 DatePickerDialog를 표시하려고합니다. 내 styles.xml에서,이 속성을 넣어 시도했지만 어떻게 기본 날짜를 설정 할 내가 사용되어야하는 최소 SDK 버전은 API (21) 내가 최소 SDK 버전 18을 사용하고레벨 21 이하의 API에서 Android DatePicker 모드를 회 전자로 설정하는 방법

<item name="android:datePickerMode">spinner</item> 

것을 말한다 API 21보다 낮은 API를위한 회 전자로의 picker 모드?

이 내 자바 코드 내 날짜 선택입니다 :

public class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), R.style.MyTheme, this, 0, 0, 0); 
    return datePickerDialog; 
} 

@Override 
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 

} 

}

감사합니다!

답변

0

내 제안 먼저 API 버전을 가져옵니다. API 버전이 21 미만이면 회 전자 표시기와 날짜 선택기를 보이지 않게 설정하십시오. API 버전을 받으려면. 이 링크를 확인하십시오

Retrieving Android API version programmatically

가 알려줘이 문제를 해결할 수 있다면, 내 제안

감사 얼마나 신뢰할 수있는 확실하지 않다!

+0

나는 이것을 시도했지만 여전히 작동하지 않았다. 나는 또한 [이] (http://stackoverflow.com/questions/30509828/impossible-to-make-my-datepickerdialog-use-a-spinner-style-programmatically)을 발견하고 나는 정말로 xml을 넣을 필요가있는 것처럼 보인다. 스피너은 style.xml에 있지만 Android Studio에서는 minSdk가 21이라고 말합니다. – racumin

3

답변을 찾았습니다. onCreateDialog 메서드에서 새 DatePickerDialog를 만드는 대신 메서드에서 부풀려진 날짜 선택 도구에 대한 자체 레이아웃을 만들었습니다.

다음은 XML 레이아웃입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<DatePicker 
    android:id="@+id/dialog_date_datePicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:calendarViewShown="false" 
    android:datePickerMode="spinner" 
    android:spinnersShown="true"> 
</DatePicker> 

그리고 여기에 자바 코드 :

public class MyDatePicker extends DialogFragment { 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     View v = getActivity().getLayoutInflater().inflate(R.layout.datepicker, null); 
     return new AlertDialog.Builder(getActivity()).setView(v).create(); 
    } 
} 

감사합니다!