从日期选择器部件隐藏一年 [英] HIDE year from date picker widget
问题描述
我试图隐藏从日期选取器widget.This年字段可能看起来像一个重复的问题,但为previous问题给出的答案不帮我隐藏年字段。
下面去我的code::(的onCreate)
月整型= 0;
年整型= 0;
日整型= 0;
OnDateSetListener datePickerListener = NULL;
CustomDatePickerDialog DP =新CustomDatePickerDialog(getBaseContext(),android.R.style.Theme_Holo_Light_Dialog,datePickerListener,年,月,日);
DatePickerDialog OBJ = dp.getPicker(); 选择器=(的DatePicker)findViewById(R.id.datePicker1);
尝试{
。java.lang.reflect.Field中的[] F = obj.getClass()getDeclaredFields();
//域F [] = picker.getClass()getDeclaredFields();
对于(java.lang.reflect.Field中的字段:F){
如果(field.getName()。等于(prabs)){
field.setAccessible(真);
DatePicker的日期选择器=(的DatePicker)field.get(OBJ);
java.lang.reflect.Field中datePickerFields [] = obj.getClass()getDeclaredFields();
对于(java.lang.reflect.Field中datePickerField:datePickerFields){
如果(mYearPicker.equals(datePickerField.getName())||mYearSpinner.equals(datePickerField
.getName()))
{
datePickerField.setAccessible(真);
对象yearPicker =新的对象();
yearPicker = datePickerField.get(日期选择器);
((查看)yearPicker).setVisibility(View.GONE);
}
}
/ *对象yearPicker =新的对象();
yearPicker = field.get(选择器);
((查看)yearPicker).setVisibility(View.GONE); * /
}
}
}
赶上(SecurityException异常五){
Log.d(ERRORe.getMessage());
}
赶上(抛出:IllegalArgumentException五){
Log.d(ERRORe.getMessage());
}
赶上(IllegalAccessException E){
Log.d(ERRORe.getMessage());
}
obj.show();
主类之外::
类CustomDatePickerDialog扩展DatePickerDialog实现OnDateChangedListener
{
私人DatePickerDialog prabs; @燮pressLint(NewApi)
公共CustomDatePickerDialog(上下文的背景下,诠释主题,
OnDateSetListener听众,年整型,诠释monthOfYear,
INT请将dayOfMonth)
{
超(背景下,主题,听众,今年,monthOfYear,请将dayOfMonth);
// TODO自动生成构造函数存根
prabs =新DatePickerDialog(背景下,主题,听众,今年,monthOfYear,请将dayOfMonth);
prabs.getDatePicker()的init(2015,01,8,这一点)。
updateTitle(monthOfYear,请将dayOfMonth);
} 私人无效updateTitle(INT月,日整型)
{
// TODO自动生成方法存根
日历mCalendar = Calendar.getInstance();
mCalendar.set(的Calendar.MONTH,日);
mCalendar.set(Calendar.DAY_OF_MONTH,日);
prabs.setTitle(的getFormat()格式(mCalendar.getTime()));
} 公众的SimpleDateFormat的getFormat(){
// TODO自动生成方法存根
返回新的SimpleDateFormat(MMM,DD);
} 公共无效onDateChanged(查看的DatePicker,年整型,诠释月,日整型)
{
updateTitle(月,日);
} 公共DatePickerDialog getPicker()
{
返回this.prabs;
}
}
前加入 obj.show();
它显示与压延整个部件,但我想我只小部件日期和月份
试图解决这个从manyyyy days..but每次都失败:(
任何建议将是很大的帮助..
谢谢。
编辑:
今年,说明此日期选取器窗口小部件的一年月食领域
我提到<一个href=\"http://stackoverflow.com/questions/10793811/how-to-display-year-only-in-date-picker-in-android\">How仅在安卓和自定义日期选取器对话框 日期选取器显示年p>
错误日志:
11月1日至9日:26:20.780:E / AndroidRuntime(23840):$ android.view.WindowManager BadTokenException:产生的原因无法添加窗口 - 令牌null不是一个应用程序,这是一个崩溃报告
尝试以下code
最终日历CAL = Calendar.getInstance();
支持mDialog =新CustomerDatePickerDialog(的getContext(),这一点,
cal.get(Calendar.YEAR),cal.get(的Calendar.MONTH)
cal.get(Calendar.DAY_OF_MONTH));
mDialog.show();
DatePicker的DP = findDatePicker((ViewGroup中)mDialog.getWindow()getDecorView());
如果(DP!= NULL){
((的ViewGroup)dp.getChildAt(0))getChildAt(0).setVisibility(View.GONE)。
}
CustomerDatePickerDialog
类CustomerDatePickerDialog扩展DatePickerDialog {
公共CustomerDatePickerDialog(上下文的背景下,OnDateSetListener回调,年整型,诠释monthOfYear,诠释请将dayOfMonth){
超(背景下,回调的一年,monthOfYear,请将dayOfMonth);
} @覆盖
公共无效onDateChanged(查看的DatePicker,年整型,诠释月,日整型){
super.onDateChanged(视图,年,月,日);
mDialog.setTitle((月+ 1)+ - +日+ - );
}
}
日期选择器
私人的DatePicker findDatePicker(ViewGroup中组){
如果(组!= NULL){
的for(int i = 0,J = group.getChildCount(); I&LT;焦耳;我++){
查看孩子= group.getChildAt(I)
如果(孩子的instanceof的DatePicker){
回报(DatePicker的)子女;
}否则如果(孩子的instanceof的ViewGroup){
DatePicker的结果= findDatePicker((ViewGroup中)的孩子);
如果(结果!= NULL)
返回结果;
}
}
}
返回null;}
Am trying hide the year field from the date picker widget.This may look like a repeated question but the answers given for previous questions are not helping me to hide the year field..
Here goes my code::(onCreate)
int month = 0;
int year = 0;
int day = 0;
OnDateSetListener datePickerListener = null;
CustomDatePickerDialog dp = new CustomDatePickerDialog(getBaseContext(), android.R.style.Theme_Holo_Light_Dialog, datePickerListener, year, month, day);
DatePickerDialog obj = dp.getPicker();
picker = (DatePicker) findViewById(R.id.datePicker1);
try {
java.lang.reflect.Field[] f = obj.getClass().getDeclaredFields();
// Field f[] = picker.getClass().getDeclaredFields();
for (java.lang.reflect.Field field : f) {
if (field.getName().equals("prabs")) {
field.setAccessible(true);
DatePicker datePicker = (DatePicker) field.get(obj);
java.lang.reflect.Field datePickerFields[] = obj.getClass().getDeclaredFields();
for (java.lang.reflect.Field datePickerField : datePickerFields) {
if ("mYearPicker".equals(datePickerField.getName()) || "mYearSpinner".equals(datePickerField
.getName()))
{
datePickerField.setAccessible(true);
Object yearPicker = new Object();
yearPicker = datePickerField.get(datePicker);
((View) yearPicker).setVisibility(View.GONE);
}
}
/* Object yearPicker = new Object();
yearPicker = field.get(picker);
((View) yearPicker).setVisibility(View.GONE);*/
}
}
}
catch (SecurityException e) {
Log.d("ERROR", e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d("ERROR", e.getMessage());
}
catch (IllegalAccessException e) {
Log.d("ERROR", e.getMessage());
}
obj.show();
outside the main class::
class CustomDatePickerDialog extends DatePickerDialog implements OnDateChangedListener
{
private DatePickerDialog prabs;
@SuppressLint("NewApi")
public CustomDatePickerDialog(Context context, int theme,
OnDateSetListener listener, int year, int monthOfYear,
int dayOfMonth)
{
super(context, theme, listener, year, monthOfYear, dayOfMonth);
// TODO Auto-generated constructor stub
prabs = new DatePickerDialog(context, theme, listener, year, monthOfYear, dayOfMonth);
prabs.getDatePicker().init(2015, 01, 8, this);
updateTitle(monthOfYear,dayOfMonth);
}
private void updateTitle(int Month, int Day)
{
// TODO Auto-generated method stub
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.MONTH, Month);
mCalendar.set(Calendar.DAY_OF_MONTH, Day);
prabs.setTitle(getFormat().format(mCalendar.getTime()));
}
public SimpleDateFormat getFormat() {
// TODO Auto-generated method stub
return new SimpleDateFormat("MMM, dd");
}
public void onDateChanged(DatePicker view,int year, int month,int day)
{
updateTitle(month,day);
}
public DatePickerDialog getPicker()
{
return this.prabs;
}
}
before adding obj.show();
it was displaying the entire widget with calender,but i i want only widget with date and month
trying to solve this from manyyyy days..but failed every time :( Any suggestions would be of great help.. Thank you..
EDIT::
year field means the date picker widget's year field of eclipse
i referred How to display year only in date picker in android and Custom Date Picker Dialog
Error log::
01-09 11:26:20.780: E/AndroidRuntime(23840): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application this is a crash report
try following code
final Calendar cal = Calendar.getInstance();
mDialog = new CustomerDatePickerDialog(getContext(), this,
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
mDialog.show();
DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView());
if (dp != null) {
((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
}
CustomerDatePickerDialog
class CustomerDatePickerDialog extends DatePickerDialog {
public CustomerDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
super(context, callBack, year, monthOfYear, dayOfMonth);
}
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
super.onDateChanged(view, year, month, day);
mDialog.setTitle((month + 1) + "-" + day + "-");
}
}
DAtePicker
private DatePicker findDatePicker(ViewGroup group) {
if (group != null) {
for (int i = 0, j = group.getChildCount(); i < j; i++) {
View child = group.getChildAt(i);
if (child instanceof DatePicker) {
return (DatePicker) child;
} else if (child instanceof ViewGroup) {
DatePicker result = findDatePicker((ViewGroup) child);
if (result != null)
return result;
}
}
}
return null;
}
这篇关于从日期选择器部件隐藏一年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!