私は私のアプリでは2 timepickerdialog、 を作成するが、私は私のtimepickerダイアログの一つが唯一の「AM」を表示することができますしたい、 、他方は必ず「PM」を表示することができ、 は、私はどのように行うことができます?Timepickerダイアログ常にAM/PM
これは、それは良い方法ではないので、私が説明しますと、私はしないだろうが、私はこれよりも良い方法があると思います、とだけにしていない私のtimepicker
私は私のアプリでは2 timepickerdialog、 を作成するが、私は私のtimepickerダイアログの一つが唯一の「AM」を表示することができますしたい、 、他方は必ず「PM」を表示することができ、 は、私はどのように行うことができます?Timepickerダイアログ常にAM/PM
これは、それは良い方法ではないので、私が説明しますと、私はしないだろうが、私はこれよりも良い方法があると思います、とだけにしていない私のtimepicker
です少なくとも1つの方法を与えてください。これは、ビューを反復してTimePicker
の下にあり、ResourceName
をandroid:id/am_label
とandroid:id/pm_label
に比較することで実現できます。
TimePicker
をAMまたはPMに設定する方法を記述しました。am
がtrue
の場合はAMに設定し、それ以外の場合はPMに設定します。
private void setMidday(View v, boolean am) {
if (!(v instanceof ViewGroup)) {
System.out.println(v.getResources().getResourceName(v.getId())); //You can check the resourcenames by this one
if (am == true) { //disable PM set to AM
if (v.getResources().getResourceName(v.getId()).equals("android:id/pm_label")) {
v.setVisibility(View.GONE);
}
if (v.getResources().getResourceName(v.getId()).equals("android:id/am_label")) {
v.performClick();
v.setClickable(false);
}
}
else { //disable AM set to PM
if (v.getResources().getResourceName(v.getId()).equals("android:id/pm_label")) {
v.performClick();
v.setClickable(false);
}
if (v.getResources().getResourceName(v.getId()).equals("android:id/am_label")) {
v.setVisibility(View.GONE);
}
}
return;
}
ViewGroup viewGroup = (ViewGroup) v;
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
setMidday(child, am);
}
}
はまた、今1をクリックし、既にクリックする意味がないので、他のものを隠した後、AMとPMラベルのクリック可能を削除しました。
TimePicker
オブジェクトの最初の子を取得してから、setMiddayを呼び出してTimePickerをAMまたはPMに設定します。 PM
設定にTimePickerを設定
View firstChild = timePicker.getChildAt(0);
setMidday(firstChild, true); //set it to AM and disable PM
//or
setMidday(firstChild, false); //set it to PM and disable AM