开发者

How do you use custom Datepicker and Timepicker skins?

开发者 https://www.devze.com 2023-01-10 08:54 出处:网络
I would like to use a custom skin for my Datepickers and Timepickers. Changing the background in XML doesn\'t do the trick (it changes the background to the set, not each of its buttons). The API开发者

I would like to use a custom skin for my Datepickers and Timepickers. Changing the background in XML doesn't do the trick (it changes the background to the set, not each of its buttons). The API开发者_StackOverflow is painfully short and has nothing about appearance ( http://developer.android.com/reference/android/widget/DatePicker.html ). Is it possible to use a custom skin for the buttons of Datepickers and Timepickers?


ok, you are looking for custom theme for datepicker and time picker.. This will allow you to change theme of buttons..

https://github.com/luminousman/DatePicker

and in ICS style

https://github.com/luminousman/android-datepicker

hope this will help you....


This is unsafe but i believe it's to only way to skin a timepicker without copying the whole class :

try { for (int i=0; i<2; i++)
{
    ((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(0).setBackgroundResource(R.drawable.timepicker_up_btn);
    ((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(1).setBackgroundResource(R.drawable.timepicker_input);
    ((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(2).setBackgroundResource(R.drawable.timepicker_down_btn);
}
} catch (Throwable t) {/* obviously no the view may look like garbage */}

obviously you must supply the referenced drawables with your app


Unfortunately numberpicker is an internal widget. Need to override these backgrounds. And there is no official way to do it.

res/layout/number_picker.xml

<NumberPickerButton android:id="@+id/increment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/timepicker_up_btn" />

<EditText android:id="@+id/timepicker_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:singleLine="true"
    style="?android:attr/textAppearanceLargeInverse"
    android:textColor="@android:color/primary_text_light"
    android:textSize="30sp"
    android:background="@drawable/timepicker_input" />

<NumberPickerButton android:id="@+id/decrement"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/timepicker_down_btn" />


    package com.pointnormal;

    import java.util.Calendar;
    import android.content.Context;
    import android.text.Editable;
    import android.text.InputFilter;
    import android.text.Spanned;
    import android.text.TextWatcher;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RelativeLayout;

    public class DateTimePicker extends RelativeLayout
    {
        private int startYear = 1900;
        private int endYear = 2100;

        private View myPickerView;

        private Button month_plus;
        private EditText month_display;
        private Button month_minus;

        private Button date_plus;
        private EditText date_display;
        private Button date_minus;

        private Button year_plus;
        private EditText year_display;
        private Button year_minus;

        private Button hour_plus;
        private EditText hour_display;
        private Button hour_minus;

        private Button min_plus;
        private EditText min_display;
        private Button min_minus;

        private Calendar cal;
        // Constructor start
        public DateTimePicker(Context context)
        {
            this(context, null);

            init(context);
        }
        public DateTimePicker(Context context, AttributeSet attrs) 
        {
            this(context, attrs, 0);
        }

        public DateTimePicker(Context context, AttributeSet attrs, int defStyle)
        {
            super(context, attrs, defStyle);
            LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            myPickerView = inflator.inflate(R.layout.datetimepicker, null);
            this.addView(myPickerView);
            initializeReference();

        } 
        private void init(Context mContext) 
        {
            LayoutInflater inflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            myPickerView = inflator.inflate(R.layout.datetimepicker, null);
            this.addView(myPickerView);
            initializeReference();
        }
        private void initializeReference() 
        {

            month_plus = (Button) myPickerView.findViewById(R.id.month_plus);
            month_plus.setOnClickListener(month_plus_listener);
            month_display = (EditText) myPickerView.findViewById(R.id.month_display);
            month_minus = (Button) myPickerView.findViewById(R.id.month_minus);
            month_minus.setOnClickListener(month_minus_listener);

            date_plus = (Button) myPickerView.findViewById(R.id.date_plus);
            date_plus.setOnClickListener(date_plus_listener);
            date_display = (EditText) myPickerView.findViewById(R.id.date_display);
            date_display.addTextChangedListener(date_watcher);
            date_minus = (Button) myPickerView.findViewById(R.id.date_minus);
            date_minus.setOnClickListener(date_minus_listener);

            year_plus = (Button) myPickerView.findViewById(R.id.year_plus);
            year_plus.setOnClickListener(year_plus_listener);
            year_display = (EditText) myPickerView.findViewById(R.id.year_display);
            year_display.setOnFocusChangeListener(mLostFocusYear);
            year_display.addTextChangedListener(year_watcher);
            year_minus = (Button) myPickerView.findViewById(R.id.year_minus);
            year_minus.setOnClickListener(year_minus_listener);


            hour_plus = (Button) myPickerView.findViewById(R.id.hour_plus);
            hour_plus.setOnClickListener(hour_plus_listener);
            hour_display = (EditText) myPickerView.findViewById(R.id.hour_display);
            hour_display.addTextChangedListener(hour_watcher);
            hour_minus = (Button) myPickerView.findViewById(R.id.hour_minus);
            hour_minus.setOnClickListener(hour_minus_listener);

            min_plus = (Button) myPickerView.findViewById(R.id.min_plus);
            min_plus.setOnClickListener(min_plus_listener);
            min_display = (EditText) myPickerView.findViewById(R.id.min_display);
            min_display.addTextChangedListener(min_watcher);
            min_minus = (Button) myPickerView.findViewById(R.id.min_minus);
            min_minus.setOnClickListener(min_minus_listener);

            initData();
            initFilterNumericDigit();

        }
        public void initData() 
        {
            cal = Calendar.getInstance();
            month_display.setText(months[cal.get(Calendar.MONTH)]);
            date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
            year_display.setText(String.valueOf(cal.get(Calendar.YEAR))); 
            hour_display.setText(String.valueOf(cal.get(Calendar.HOUR_OF_DAY))); 
            min_display.setText(String.valueOf(cal.get(Calendar.MINUTE)));
        }

        private void initFilterNumericDigit()
        {

            try {
                date_display.setFilters(new InputFilter[] { new InputFilterMinMax(1, cal.getActualMaximum(Calendar.DAY_OF_MONTH)) });
                InputFilter[] filterArray_year = new InputFilter[1];
                filterArray_year[0] = new InputFilter.LengthFilter(4);
                year_display.setFilters(filterArray_year);
                hour_display.setFilters(new InputFilter[] { new InputFilterMinMax(0, 23) }); 
                min_display.setFilters(new InputFilter[] { new InputFilterMinMax(0, 59) });
            } 
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        private void changeFilter() 
        {
            try {

                date_display.setFilters(new InputFilter[] { new InputFilterMinMax(1, cal.getActualMaximum(Calendar.DAY_OF_MONTH)) });
            } 
            catch (Exception e) 
            {
                date_display.setText("" + cal.get(Calendar.DAY_OF_MONTH));
                e.printStackTrace();
            }
        }
        public void setTimeChangedListener(TimeWatcher listener)
        {
            this.mTimeWatcher = listener;
        }

        public void removeTimeChangedListener()
        {
            this.mTimeWatcher = null;
        }

        View.OnClickListener hour_plus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                hour_display.requestFocus();

                try
                { 
                    cal.add(Calendar.HOUR_OF_DAY, 1); 
                    sendToDisplay();
                } 
                catch (Exception e) 
                {
                    Log.e("", e.toString());

                }
            }
        };
        View.OnClickListener hour_minus_listener = new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                hour_display.requestFocus();

                try 
                {  
                    cal.add(Calendar.HOUR_OF_DAY, -1); 
                    sendToDisplay();
                } 
                catch (Exception e)
                {
                    Log.e("", e.toString());
                }
            }
        };

        View.OnClickListener min_plus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                min_display.requestFocus();

                try
                {
                    cal.add(Calendar.MINUTE, 1);
                    sendToDisplay();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
            }
        };
        View.OnClickListener min_minus_listener = new View.OnClickListener() 
        {

            @Override
            public void onClick(View v)
            {
                min_display.requestFocus();

                try 
                {
                    cal.add(Calendar.MINUTE, -1);
                    sendToDisplay();
                } 
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        };

        String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec" };

        View.OnClickListener month_plus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {

                try 
                {
                    cal.add(Calendar.MONTH, 1);

                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    changeFilter();
                    sendToListener();
                } 
                catch (Exception e)
                {
                    Log.e("", e.toString());
                }
            }
        };
        View.OnClickListener month_minus_listener = new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                try
                {
                    cal.add(Calendar.MONTH, -1);
                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    changeFilter();
                    sendToListener();
                } 
                catch (Exception e)
                {
                    Log.e("", e.toString());
                }
            }
        };
        View.OnClickListener date_plus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v) 
            {

                try 
                {
                    date_display.requestFocus();
                    cal.add(Calendar.DAY_OF_MONTH, 1);
                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    sendToListener();
                } 
                catch (Exception e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        };
        View.OnClickListener date_minus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v) 
            {

                try {
                    date_display.requestFocus();
                    cal.add(Calendar.DAY_OF_MONTH, -1);
                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    sendToListener();
                } 
                catch (Exception e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };
        View.OnClickListener year_plus_listener = new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {

                try {
                    year_display.requestFocus();

                    if (cal.get(Calendar.YEAR) >= endYear) 
                    {

                        cal.set(Calendar.YEAR, startYear);

                    } 
                    else
                    {
                        cal.add(Calendar.YEAR, +1);

                    }

                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    changeFilter();
                    sendToListener();
                } 
                catch (Exception e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        };
        View.OnClickListener year_minus_listener = new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

                try {
                    year_display.requestFocus();

                    if (cal.get(Calendar.YEAR) <= startYear) {
                        cal.set(Calendar.YEAR, endYear);

                    }
                    else
                    {
                        cal.add(Calendar.YEAR, -1);

                    }

                    month_display.setText(months[cal.get(Calendar.MONTH)]);
                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                    date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
                    changeFilter();
                    sendToListener();
                }
                catch (Exception e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        };


        class InputFilterMinMax implements InputFilter 
        {

            private int min, max;
            public InputFilterMinMax(int min, int max) 
            {
                this.min = min;
                this.max = max;
            }

            public InputFilterMinMax(String min, String max)
            {
                this.min = Integer.parseInt(min);
                this.max = Integer.parseInt(max);
            }

            @Override
            public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) 
            {
                try {
                    int input = Integer.parseInt(dest.toString()+ source.toString());
                    if (isInRange(min, max, input)) 
                    {
                        return null;
                    }
                } 
                catch (NumberFormatException nfe) 
                {
                }
                return "";
            }

            private boolean isInRange(int a, int b, int c)
            {
                return b > a ? c >= a && c <= b : c >= b && c <= a;
            }
        }

        public void reset()
        {
            cal = Calendar.getInstance();
            initFilterNumericDigit();
            initData();
            sendToDisplay();
        }

        synchronized private void sendToListener() 
        {

            if (mTimeWatcher != null)
            { 
                    mTimeWatcher.onTimeChanged(cal.get(Calendar.HOUR_OF_DAY),
                            cal.get(Calendar.MINUTE), -1); 
            }
            if (mDateWatcher != null) 
            {
                mDateWatcher.onDateChanged(cal);
            }
        }

        private void sendToDisplay() 
        {

            hour_display.setText(String.valueOf(cal.get(Calendar.HOUR_OF_DAY))); 
            min_display.setText(String.valueOf(cal.get(Calendar.MINUTE)));
        }

        TimeWatcher mTimeWatcher = null;

        public interface TimeWatcher 
        {
            void onTimeChanged(int h, int m, int am_pm);
        }

        TextWatcher hour_watcher = new TextWatcher()
        {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,int count)
            {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after)
            {

            }

            @Override
            public void afterTextChanged(Editable s) 
            {
                try 
                {
                    if (s.toString().length() > 0)
                    {
                        cal.set(Calendar.HOUR_OF_DAY,Integer.parseInt(s.toString()));
                        sendToListener();
                    }

                } 
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        };

        TextWatcher min_watcher = new TextWatcher() 
        {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,int count)
            {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after) 
            {

            }

            @Override
            public void afterTextChanged(Editable s) 
            {
                try
                {
                    if (s.toString().length() > 0) 
                    {
                        cal.set(Calendar.MINUTE, Integer.parseInt(s.toString()));
                        sendToListener();
                    }

                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
            }
        };

        public int getYear() 
        {
            return Integer.parseInt(year_display.getText().toString());
        }

        public int getDay() 
        {
            return Integer.parseInt(date_display.getText().toString());
        }

        public String getMonth()
        { 
            return month_display.getText().toString();
        }

        public int getHour() 
        {
            return Integer.parseInt(hour_display.getText().toString());
        }

        public int getMinute()
        {
            return Integer.parseInt(min_display.getText().toString());
        }

        public void setDateChangedListener(DateWatcher listener) 
        {
            this.mDateWatcher = listener;
        }

        public void removeDateChangedListener() 
        {
            this.mDateWatcher = null;
        }


        View.OnFocusChangeListener mLostFocusYear = new OnFocusChangeListener() 
        {

            @Override
            public void onFocusChange(View v, boolean hasFocus)
            {
                if (!hasFocus)
                {

                    year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
                }
            }
        };



        TextWatcher date_watcher = new TextWatcher()
        {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,int count) 
            {
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after)
            {

            }

            @Override
            public void afterTextChanged(Editable s)
            {

                try 
                {
                    if (s.toString().length() > 0) 
                    {
                        // Log.e("", "afterTextChanged : " + s.toString());
                        cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(s.toString()));
                        month_display.setText(months[cal.get(Calendar.MONTH)]);
                        sendToListener();
                    }
                } 
                catch (NumberFormatException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }

            }
        };

        TextWatcher year_watcher = new TextWatcher() 
        {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,int count)
            {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after) 
            {

            }

            @Override
            public void afterTextChanged(Editable s)
            {
                try 
                {
                    if (s.toString().length() == 4) 
                    {
                        int year = Integer.parseInt(s.toString());

                        if (year > endYear)
                        {
                            cal.set(Calendar.YEAR, endYear);
                        } 
                        else if (year < startYear) 
                        {
                            cal.set(Calendar.YEAR, startYear);
                        } 
                        else
                        {
                            cal.set(Calendar.YEAR, year);
                        }
                    }

                    sendToListener();
                }
                catch (Exception e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };

        DateWatcher mDateWatcher = null;

        public interface DateWatcher 
        {
            void onDateChanged(Calendar c);
        }

    }

      public void button_click(View view)
     {  
            // Create the dialog
            final Dialog mDateTimeDialog = new Dialog(this);
            // Inflate the root layout

            final RelativeLayout mDateTimeDialogView = (RelativeLayout) getLayoutInflater().inflate(R.layout.date_time_dialog, null);
            // Grab widget instance
            final DateTimePicker mDateTimePicker = (DateTimePicker) mDateTimeDialogView.findViewById(R.id.DateTimePicker);
            mDateTimePicker.setDateChangedListener(this); 

            // Update demo TextViews when the "OK" button is clicked 
            ((Button) mDateTimeDialogView.findViewById(R.id.SetDateTime)).setOnClickListener(new OnClickListener() {

                public void onClick(View v)
                {
                    mDateTimePicker.clearFocus();
                    // TODO Auto-generated method stub 
                    String result_string = mDateTimePicker.getMonth() + "/" + String.valueOf(mDateTimePicker.getDay()) + "/" + String.valueOf(mDateTimePicker.getYear())+ "  " + String.valueOf(mDateTimePicker.getHour()) + ":" + String.valueOf(mDateTimePicker.getMinute());
//                  if(mDateTimePicker.getHour() > 12) result_string = result_string + "PM";
//                  else result_string = result_string + "AM";

                    //if(result_string<)
                    edit_text.setText(result_string);
                    mDateTimeDialog.dismiss();
                }
            });

            // Cancel the dialog when the "Cancel" button is clicked
            ((Button) mDateTimeDialogView.findViewById(R.id.CancelDialog)).setOnClickListener(new OnClickListener() {

                public void onClick(View v) 
                {
                    // TODO Auto-generated method stub
                    mDateTimeDialog.cancel();
                }
            });

            // Reset Date and Time pickers when the "Reset" button is clicked

            ((Button) mDateTimeDialogView.findViewById(R.id.ResetDateTime)).setOnClickListener(new OnClickListener() 
            {

                public void onClick(View v)
                {
                    // TODO Auto-generated method stub
                    mDateTimePicker.reset();
                }
            });

            // Setup TimePicker
            // No title on the dialog window
            mDateTimeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            // Set the dialog content view
            mDateTimeDialog.setContentView(mDateTimeDialogView);
            // Display the dialog
            mDateTimeDialog.show();             
        }
     public void onDateChanged(Calendar c) 
     { 
            Log.e("","" + c.get(Calendar.MONTH) + " " + c.get(Calendar.DAY_OF_MONTH)+ " " + c.get(Calendar.YEAR));
     }`enter code here`


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/DateTimePicker"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:padding="5dip" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="true"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/month_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/month_plus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_up" />

            <EditText
                android:id="@+id/month_display"
                android:layout_width="45dp"
                android:layout_height="35dp"
                android:background="@drawable/picker_middle"
                android:focusable="false"
                android:gravity="center"
                android:singleLine="true"
                android:textColor="#C0C0C0" >
            </EditText>

            <Button
                android:id="@+id/month_minus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_down" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/date_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/date_plus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_up" />

            <EditText
                android:id="@+id/date_display"
                android:layout_width="45dp"
                android:layout_height="35dp"
                android:background="@drawable/picker_middle"
                android:gravity="center"
                android:inputType="number"
                android:singleLine="true"
                android:textColor="#C0C0C0" />

            <Button
                android:id="@+id/date_minus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_down" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/year_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/year_plus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_up" />

            <EditText
                android:id="@+id/year_display"
                android:layout_width="45dp"
                android:layout_height="35dp"
                android:background="@drawable/picker_middle"
                android:gravity="center"
                android:inputType="number"
                android:singleLine="true"
                android:textColor="#C0C0C0" />

            <Button
                android:id="@+id/year_minus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_down" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/hour_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/hour_plus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_up" />

            <EditText
                android:id="@+id/hour_display"
                android:layout_width="45dp"
                android:layout_height="35dp"
                android:background="@drawable/picker_middle"
                android:gravity="center"
                android:inputType="number"
                android:singleLine="true"
                android:textColor="#C0C0C0" >
            </EditText>

            <Button
                android:id="@+id/hour_minus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_down" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/min_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/min_plus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_up" />

            <EditText
                android:id="@+id/min_display"
                android:layout_width="45dp"
                android:layout_height="35dp"
                android:background="@drawable/picker_middle"
                android:gravity="center"
                android:inputType="number"
                android:singleLine="true"
                android:textColor="#C0C0C0" />

            <Button
                android:id="@+id/min_minus"
                android:layout_width="40dp"
                android:layout_height="28dp"
                android:background="@drawable/image_button_down" />
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>`enter code here`
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号