2017-09-11 10 views
0

私のアプリでは、DatePickerダイアログとTime pickerダイアログを使用して、日付と時刻を適切に選択しています。さて、これらのダイアログで、色は私のThemecolorに基づいて設定されます。しかし、私がしたいことは、それらの色を手動で変更することです。私はツールバーの色をこのように変更しました。toolbar.setBackgroundColor(Constant.color);しかし、どのように手動で同じ方法で見出しの色(現在の日付が表示されている - 私は画像を添付しました)と日付ピッカーの色(現在の日付を示す丸いピッカー)を変更することができます。 Theme.AppCompatに変更テーマ - ここカレンダーダイアログの色を変更するにはAndroid

はここDeatepickerDialog

DatePicker Dialog

の私のイメージは、日付ピッカーダイアログ

public class TodoAddActivity extends AppCompatActivity { 

// Variables 
private Context mContext; 

.... 

private RealmResults<TodoModel> results; 

public final static String INTENT_KEY_ID = "taskId"; 
public final static String DATE_FORMAT = "dd/MMM/yy"; 

Constant constant; 
SharedPreferences app_preferences; 
int appTheme; 
int themeColor; 
int appColor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.todo_add_layout); 

    app_preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    appColor = app_preferences.getInt("color", 0xff3F51B5); 
    appTheme = app_preferences.getInt("theme", 0xff3F51B5); 
    themeColor = appColor; 
    constant.color = appColor; 

    if (themeColor == 0){ 
     setTheme(Constant.theme); 
    }else if (appTheme == 0){ 
     setTheme(Constant.theme); 
    }else{ 
     setTheme(appTheme); 
    } 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_add); 
    toolbar.setBackgroundColor(Constant.color); 
    setSupportActionBar(toolbar); 

    mContext = this; 
    realm=Realm.getDefaultInstance(); 
    setUpUIViews(); 
    showData(); 

    final String taskId = getIntent().getStringExtra(INTENT_KEY_ID); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (taskId == null) 
       addTask(); 
      else 
       editTask(taskId); 
     } 
    }); 
    mTaskDateEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      datePicker(view); 
     } 
    }); 
    mTaskDateEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if (b) 
       datePicker(view); 
     } 
    }); 
    mTaskTimeEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      timePicker(view); 
     } 
    }); 
    mTaskTimeEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if (b) 
       timePicker(view); 
     } 
    }); 
    if (taskId != null) { 
     fillTask(realm.where(TodoModel.class).equalTo("id", taskId).findFirst()); 
     button.setText("EDIT"); 
    } 



} 
private void setUpUIViews() { 
    ... 
} 

public void showData(){ 
    //tasks = new ArrayList<>(); //error 
    //RealmResults<TodoModel> tasksResult = realm.where(TodoModel.class).findAll(); 
    //for (TodoModel task : tasksResult) 
    // tasks.add(task); //error*/ 
    results = realm.where(TodoModel.class).findAll(); 
} 

protected TodoModel getTask(int position) { 
    return results.get(position); 
} 

private void fillTask(TodoModel task) { 
    ... 
} 

private void addTask() { 
    ... 
} 

protected void addTask(TodoModel task) { 

    .. 
} 
private void editTask(String taskId) { 
    S.... 
} 

protected void updateTask(TodoModel task) { 

    .... 
} 


private void datePicker(final View view) { 
    Calendar currentTime = Calendar.getInstance(); 
    int year = currentTime.get(Calendar.YEAR); 
    int monthOfYear = currentTime.get(Calendar.MONTH); 
    int dayOfMonth = currentTime.get(Calendar.DAY_OF_MONTH); 

    DatePickerDialog mDatePickerDialog = new DatePickerDialog(mContext,0, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) { 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(year, monthOfYear, dayOfMonth); 
      SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 
      ((EditText) view).setText(sdf.format(calendar.getTime())); 
     } 
    }, year, monthOfYear, dayOfMonth); 

    mDatePickerDialog.setTitle("Select Time"); 
    mDatePickerDialog.show(); 
} 
private void timePicker(final View view) { 
    Calendar mcurrentTime = Calendar.getInstance(); 
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
    int minute = mcurrentTime.get(Calendar.MINUTE); 
    TimePickerDialog mTimePicker; 
    mTimePicker = new TimePickerDialog(mContext,0, new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
      mTaskTimeEditText.setText(selectedHour + ":" + selectedMinute); 
     } 
    }, hour, minute, true);//Yes 24 hour time 
    mTimePicker.setTitle("Select Time"); 
    mTimePicker.show(); 

} 

}

答えて

0
new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() { 
@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    //Your Code 
} 
}, year, monthOfYear, dayOfMonth).show(); 

EDITのための私のコードです.Light.Dialog as suggest

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
     <item name="colorAccent">@color/xyz</item> 
</style> 
+0

ありがとうございました。しかし、私のアプリでは、私は設定オプションを持っています。ここでは、色の選択肢が色の選択肢に基づいて多く設定されています。私はこの方法でツールバーオプションを設定するコードを与えました。しかし、私は現在の時間が表示されている、Calenderの見出しの色を変更する方法を知りたいと思います。 – tamrezh21

0

これをやってみてください。あなたのstyles.xmlで

は、次の行を追加します。

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="colorAccent">@color/yourColor</item> 
</style> 

次に、あなたの日付ピッカーで代わりにこれを行います。

DatePickerDialog mDatePickerDialog = new DatePickerDialog(mContext, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() 
+0

@Martinあなたの答えをありがとう。しかし、私のアプリでは、私は設定オプションを持っています。ここでは、色の選択肢が色の選択肢に基づいて多く設定されています。私はこの方法でツールバーオプションを設定するコードを与えました。しかし、私はカレンダーの見出しの色を変更する方法を知りたいと思います。現在の時間が表示されています – tamrezh21

関連する問題