2017-06-24 5 views
0

私は私のアプリでは2 timepickerdialog、 を作成するが、私は私のtimepickerダイアログの一つが唯一の「AM」を表示することができますしたい、 、他方は必ず「PM」を表示することができ、 は、私はどのように行うことができます?Timepickerダイアログ常にAM/PM

これは、それは良い方法ではないので、私が説明しますと、私はしないだろうが、私はこれよりも良い方法があると思います、とだけにしていない私のtimepicker

http://ppt.cc/xGspr

答えて

0

です少なくとも1つの方法を与えてください。これは、ビューを反復してTimePickerの下にあり、ResourceNameandroid:id/am_labelandroid:id/pm_labelに比較することで実現できます。

TimePickerをAMまたはPMに設定する方法を記述しました。amtrueの場合は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 PM TimePicker

設定に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 

TimePickerは午前AM TimePicker