Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
771 views
in Technique[技术] by (71.8m points)

android - Custom date picker with months and years

How can I create a date picker for just months and years?

For example I want a picker with just

2012,2013 as year and 4,5,6,7 as months.

Thank you

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can make your own like soo... I know this one has days as well but you get the point..

Its composed of two views for each picker, representing buttons, with a ImageView in the center, and a textSwitcher that takes care of the numbers.

enter image description here

public class EditHomeworkActivity extends Activity implements ViewSwitcher.ViewFactory{

private TextSwitcher mSwitcher1;
private TextSwitcher mSwitcher2;
private TextSwitcher mSwitcher3;

public static int hwID;
public static int change = 0;
public static int year = 1819710;
public static int day = 1819710;
public static int month = 1819710;


int prevMnth;

Calendar cal;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.edit_homework_dialog);

    mSwitcher1 = (TextSwitcher) findViewById(R.id.day);
    mSwitcher1.setFactory(this);

    mSwitcher2 = (TextSwitcher) findViewById(R.id.month);
    mSwitcher2.setFactory(this);

    mSwitcher3 = (TextSwitcher) findViewById(R.id.year);
    mSwitcher3.setFactory(this);

    Animation in = AnimationUtils.loadAnimation(this,
            android.R.anim.fade_in);
    Animation out = AnimationUtils.loadAnimation(this,
            android.R.anim.fade_out);

    mSwitcher1.setInAnimation(in);
    mSwitcher1.setOutAnimation(out);

    mSwitcher2.setInAnimation(in);
    mSwitcher2.setOutAnimation(out);

    mSwitcher3.setInAnimation(in);
    mSwitcher3.setOutAnimation(out);

    Button confirm= (Button) findViewById(R.id.confirm);
    Button cancel = (Button) findViewById(R.id.cancel );

    cal = Calendar.getInstance();

    if(year != 1819710){cal.set(Calendar.YEAR, year);}
    if(month != 1819710){cal.set(Calendar.MONTH, month);}
    if(day != 1819710){cal.set(Calendar.DAY_OF_MONTH, day);}

    ImageButton dayP= (ImageButton) findViewById(R.id.dayP);
    ImageButton dayM= (ImageButton) findViewById(R.id.dayM);

    ImageButton monthP= (ImageButton) findViewById(R.id.monthP);
    ImageButton monthM= (ImageButton) findViewById(R.id.monthM);

    ImageButton yearP= (ImageButton) findViewById(R.id.yearP);
    ImageButton yearM= (ImageButton) findViewById(R.id.yearM);


    // add a click listener to the button
    confirm.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            EditHomeworkActivity.DueYear = cal.get(Calendar.YEAR);
            EditHomeworkActivity.DueMonth = cal.get(Calendar.MONTH);
            EditHomeworkActivity.DueDay = cal.get(Calendar.DAY_OF_MONTH);

            finish();
        }
    });

    cancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            finish();
        }
    });

    dayP.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.DAY_OF_YEAR, 1);update();}});
    dayM.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.DAY_OF_YEAR, -1);update();}});

    monthP.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.MONTH,  1);update();}});
    monthM.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.MONTH, -1);update();}});

    yearP.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.YEAR,  1);update();}});
    yearM.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cal.roll(Calendar.YEAR, -1);update();}});


    update();
}



public void update(){

    mSwitcher1.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
    mSwitcher2.setText(sort(cal.get(Calendar.MONTH)));
    mSwitcher3.setText(String.valueOf(cal.get(Calendar.YEAR)));


}

private CharSequence sort(int i) {

    String retrn = null;

    if(i == 0){retrn = "Jan";prevMnth = i;}
    if(i == 1){retrn = "Feb";}
    if(i == 2){retrn = "Mar";}
    if(i == 3){retrn = "Apr";}
    if(i == 4){retrn = "May";}
    if(i == 5){retrn = "Jun";}
    if(i == 6){retrn = "Jul";}
    if(i == 7){retrn = "Aug";}
    if(i == 8){retrn = "Sept";}
    if(i == 9){retrn = "Oct";}
    if(i == 10){retrn = "Nov";}
    if(i == 11){retrn = "Dec";prevMnth = i;}

    if(i == 12){if(prevMnth == 0){cal.roll(Calendar.MONTH, -1);}else{cal.roll(Calendar.MONTH, 1);}update();}

    return retrn;
}

public View makeView() {
    TextView t = new TextView(this);
    t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
    t.setTextSize(36);

    return t;
}




}

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/android_rel_background" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:padding="15dip"
            android:text="Homework Due Date:"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#00B7EE" />

        <View
            android:id="@+id/v"
            android:layout_width="match_parent"
            android:layout_height="4dip"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/title"
            android:background="#DFDFDF" />

        <TextView
            android:id="@+id/dateText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/v"
            android:layout_centerHorizontal="true"
            android:padding="15dip"
            android:text="Date:"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#00B7EE"
            android:visibility="gone" />

        <View
            android:id="@+id/v1"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/dateText"
            android:background="#DFDFDF" />

        <RelativeLayout
            android:id="@+id/rel1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:layout_below="@+id/v1" android:padding="15dip">

            <RelativeLayout
                android:id="@+id/rel1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_centerInParent="true">

                <View
                    android:id="@+id/v1"
                    android:layout_width="1dip"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/dayV"
                    android:layout_alignTop="@+id/dayV"
                    android:background="#DFDFDF" />

                <LinearLayout
                    android:id="@+id/dayV"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:orientation="vertical" android:layout_toRightOf="@+id/v1">

                    <View
                        android:id="@+id/v"
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/title"
                        android:background="#DFDFDF" />

                    <ImageButton
                        android:id="@+id/dayP"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/android_rel_background"
                        android:padding="30dip"
                        android:src="@drawable/plus" />

                    <View
                        android:id="@+id/v"
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/title"
                        android:background="#DFDFDF" />

                    <RelativeLayout
                        android:id="@+id/relativeLayout2"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" >

                        <TextSwitcher
                            android:id="@+id/day"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:paddingBottom="15dip"
                            android:paddingTop="15dip" android:layout_centerInParent="true">
                        </TextSwitcher>

                    </RelativeLayout>

                    <View
                        android:id="@+id/v"
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/title"
                        android:background="#DFDFDF" />

                    <ImageButton
                        android:id="@+id/dayM"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/android_rel_background"
                        android:padding="30dip"
                        android:src="@drawable/minus" />

                    <View
                        android:id="@+id/v"
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/title"
                        android:background="#DFDFDF" />
                </LinearLayout>

                <View
                    android:id="@+id/v2"
                    android:layout_width="1dip"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/dayV"
                    android:layout_alignTop="@+id/dayV"
                    android:layout_toRightOf="@+id/dayV"
                    android:background="#DFDFDF" />

                <LinearLayout
                    android:id="@+id/monthV"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toRightOf="@+id/v2"
                    android:orientation="vertical" >

                    <View
                        android:id="@+id/v"
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/title"
                        android:background="#DFDFDF" 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...