Custom date picker with months and years

后端 未结 1 1735
忘掉有多难
忘掉有多难 2020-12-18 14:49

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

相关标签:
1条回答
  • 2020-12-18 15:29

    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" />
    
                        <ImageButton
                            android:id="@+id/monthP"
                            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/relativeLayout3"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" >
    
                            <TextSwitcher
                                android:id="@+id/month"
                                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/monthM"
                            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/v3"
                        android:layout_width="1dip"
                        android:layout_height="wrap_content"
                        android:layout_alignBottom="@+id/dayV"
                        android:layout_alignTop="@+id/dayV"
                        android:layout_toRightOf="@+id/monthV"
                        android:background="#DFDFDF" />
    
                    <LinearLayout
                        android:id="@+id/yearV"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentTop="true"
                        android:layout_toRightOf="@+id/v3"
                        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" />
    
                        <ImageButton
                            android:id="@+id/yearP"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/android_rel_background"
                            android:src="@drawable/plus" android:paddingLeft="40dip" android:paddingRight="40dip" android:paddingBottom="30dip" android:paddingTop="30dip"/>
    
                        <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/relativeLayout4"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" >
    
                            <TextSwitcher
                                android:id="@+id/year"
                                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/yearM"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/android_rel_background"
                            android:src="@drawable/minus" android:paddingLeft="40dip" android:paddingRight="40dip" android:paddingTop="30dip" android:paddingBottom="30dip"/>
    
                        <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/v4"
                        android:layout_width="1dip"
                        android:layout_height="wrap_content"
                        android:layout_alignBottom="@+id/dayV"
                        android:layout_alignTop="@+id/dayV"
                        android:layout_toRightOf="@+id/yearV"
                        android:background="#DFDFDF" />
                </RelativeLayout>
    
            </RelativeLayout>
    
            <View
                android:id="@+id/v2"
                android:layout_width="match_parent"
                android:layout_height="1dip"
                android:layout_alignParentLeft="true"
                android:background="#DFDFDF" android:layout_below="@+id/rel1"/>
    
            <LinearLayout
                android:id="@+id/linearLayout1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/v2"
                android:background="#FF909090"
                android:paddingBottom="5dip" >
    
                <Button
                    android:id="@+id/confirm"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="4dip"
                    android:layout_weight="1"
                    android:padding="5dip"
                    android:text="Confirm" />
    
                <Button
                    android:id="@+id/cancel"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="4dip"
                    android:layout_weight="1"
                    android:padding="5dip"
                    android:text="Cancel" />
            </LinearLayout>
    
        </RelativeLayout>
    
    0 讨论(0)
提交回复
热议问题