2010-08-12 27 views
10

He estado atascado en un problema con DatePicker durante varios y parece que no puedo encontrar ninguna solución.Custom DatePicker

Actualmente tengo un DatePickerDialog que se ajusta muy bien a mis necesidades AÚN también necesito poder ocultar/deshabilitar el campo Día y mes (para seleccionar un mes o un año), no puedo encontrar ningún solución, excepto la implementación de mi propio MonthPicker/yearPicker. el hecho es que realmente no sé por dónde empezar para escribir un selector que tiene el mismo estilo que el predeterminado.

Estaría encantado de que alguno de ustedes tenga código de ejemplo de picjer de fecha personalizada o cualquier idea más simple para hacer frente a mi problema.

Muchas gracias

silencio

+0

Prueba esto, puede comenzar a partir de aquí, la selección tiene spinner normal y visión compleja golpe localizador http://viswanathl.in/2014/02/custom-datepicker-in-android/ –

Respuesta

7

Mi idea está utilizando un selector de fechas personalizado para android. En Google Code, me encontré con un proyecto de código abierto llamado Android Wheel

Android wheel for date time picker

Después código fuente de pago de Google Code, encontrará varios ejemplos de modo que se puede personalizar fácilmente un año-picker como desee.

+0

hola tienes el código fuente de esta rueda? – Dimitri

+0

@Nikita Puede encontrar en mi respuesta el enlace a su repositorio de Google Code. – anticafe

+0

¿me puede dar el enlace por favor? – Dimitri

1

Es un poco raro, pero si nos fijamos en el diseño del DatePicker puede ver que es un FrameLayout que contiene 3 sub-vistas. Así que estaba queriendo esconderme el año e hice esto.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ViewGroup group = (ViewGroup) findViewById(R.id.picker); 
    group = (ViewGroup) group.getChildAt(0); 
    Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show(); 
    try{ 
     group.getChildAt(2).setVisibility(View.GONE); 
      // 2 for year, 1 for day, 0 for month 
    }catch(Exception e){ 
     Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 
    } 
} 

Esto obtiene el framelayout del selector y luego oculta su tercer hijo, que es el año. ¡Espero que esto ayude!

+0

Gracias por la idea. Aunque solo el año podría ocultarse con éxito en general, la posición de mes y día depende de la configuración regional (mes/día/año para EE. UU. Y día/mes/año para el Reino Unido, por ejemplo). – ernazm

3

Hay algún cambio en el nido de abeja.

ViewGroup group = (ViewGroup) findViewById(R.id.picker); 
group = (ViewGroup) group.getChildAt(0); 
group = (ViewGroup) group.getChildAt(0); 
// 0:datepicker , 1:calendar 
Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show(); 
try{ 
    group.getChildAt(0).setVisibility(View.GONE); 
    // 0 for year, 1 for month, 2 for day 
}catch(Exception e){ 
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 
}