Bom dia, tenho um datepicker que retorna um valor para meu textview, ao clicar neste textview abro o datepicker, porém ele está vindo com o formato de spinner e eu gostaria que viesse como calendar.
Como posso alterar isso no Android?
Grato.
O DataPicker muda o design de acordo com as diferentes versões do Android.
Qual celular está testando o app?
Estou rodando no emulador nexus com Android 5 google API 22. Uso o tema android:Theme.Holo.Light.DarkActionBar.
Grato
Manda o seu código XML e Java e tbm um print se possível.
Opa, não estou utilizando um XML para datepicker e sim um DialogFragment, vou mandar todas as classe e o print.
public class MainActivity extends Activity implements View.OnClickListener, SelectDateDialog.OnDateSetListener{
private Spinner spinner;
private EditText edtDataIni;
private EditText edtDataFim;
private EditText edtDataIniTag;
private EditText edtDataFimTag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.sp1_tag);
ArrayAdapter<CharSequence> tagAdapter = ArrayAdapter.createFromResource(this, R.array.tags, android.R.layout.simple_list_item_1);
spinner.setAdapter(tagAdapter);
spinner.setSelection(0);
edtDataIni = (EditText) findViewById(R.id.edt_dataIni);
edtDataIni.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.edt_dataIni){
SelectDateDialog dialog = SelectDateDialog.newInstance(this);
String date = edtDataIni.getText().toString();
if(!StringUtils.isEmptyOrWhiteSpaces(date)) {
int[] info = DateUtils.parseDateInfo(date);
dialog.setDate(info[2], info[1], info[0]);
}
dialog.show(getFragmentManager(), "dateDialog");
}
if(v.getId() == R.id.edt_dataFim){
SelectDateDialog dialog = SelectDateDialog.newInstance(this);
String date = edtDataIniTag.getText().toString();
if(!StringUtils.isEmptyOrWhiteSpaces(date)) {
int[] info = DateUtils.parseDateInfo(date);
dialog.setDate(info[2], info[1], info[0]);
}
dialog.show(getFragmentManager(), "dateDialog");
}
}
@Override
public void onDateSet(int year, int monthOfYear, int dayOfMonth) {
edtDataIni.setText(DateUtils.formatDate(year, monthOfYear, dayOfMonth));
}
}
package br.ind.risc.dialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.DatePicker;
import br.ind.risc.utils.DateUtils;
// Dialog de seleção de data (DatePicker)
public class SelectDateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private OnDateSetListener listener;
private OnDateSetListener listener2;
private int dayOfMonth;
private int monthOfYear;
private int year;
private boolean isDateSet;
// Cria o fragment. Recebe um listener que será usado para notificar quando a data for alterada
public static SelectDateDialog newInstance(OnDateSetListener listener) {
SelectDateDialog dialog = new SelectDateDialog();
dialog.listener = listener;
return dialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
if (isDateSet) {
// Se uma data foi fornecida, exibe o dialog com esta data
return new DatePickerDialog(getActivity(), this, year, monthOfYear - 1, dayOfMonth);
} else {
// Ser uma data não foi fornecida, exibe o dialog com a data de hoje
int[] today = DateUtils.today();
return new DatePickerDialog(getActivity(), this, today[2], today[1] - 1, today[0]);
}
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// Uma data foi definida. Se existir um listener, avisa sobre a data escolhida
if (listener != null) {
listener.onDateSet(year, monthOfYear + 1, dayOfMonth);
}
}
// Define uma data para ser exibida quando o dialog for aberto
public void setDate(int year, int monthOfYear, int dayOfMonth) {
this.year = year;
this.monthOfYear = monthOfYear;
this.dayOfMonth = dayOfMonth;
this.isDateSet = true;
}
// Interface implementada por classes que desejam ser notificadas a respeito de seleção de data
public interface OnDateSetListener {
public void onDateSet(int year, int monthOfYear, int dayOfMonth);
}
}
Ao clicar no textview abre o dialog do datepicker
Um outro problema que estou tendo nesse código é o fato que ao dar ok, ele insere data em todos os campos(já achei onde está o erro, só não sei resolver…kkk).
Grato.