2

レイアウトにTimePickerがあります。ボタンまたはイベントをクリックしてTimePickerを無効にする必要があります(ユーザーは時間または分を変更できません)。

どうすれば無効にできますか?

以下のスニペットは機能しませんでした

TimePicker tp = (...)findViewById(...);

  for(int i = 0; i< tp.getChildCount(); i++)
        ((View)tp.getChildAt(i)).setEnabled(false);
4

3 に答える 3

0

これは決して良い考えではありませんが、うまくTimePicker.setEnabled(false)いかない場合は、再帰的な無効化を試すことができます。

private void disable(ViewGroup vg)
{
    for (int i = 0; i < vg.getChildCount(); ++i)
    {
        View v = vg.getChildAt(i);
        if (v instanceof ViewGroup)
        {
            disable((ViewGroup)v);
        }
        else
        {
            v.setEnabled(false);
        }
    }
}

TimePickerをこのメソッドに渡すだけです。

于 2013-01-11T19:32:38.197 に答える
0

私は解決策を見つけました:

 for(int i = 0; i < timePickerStartingHour.getChildCount(); i++) {
     Log.i("MyApp", timePickerStartingHour.getChildAt(i).getClass().getName()); //prints LinearLayout

     for (int j = 0; j < ((LinearLayout)timePickerStartingHour.getChildAt(i)).getChildCount(); j++ ) {
         ((LinearLayout)timePickerStartingHour.getChildAt(i)).getChildAt(j).setEnabled(false);
     }

 }

TimePicker には LinearLayout である子が 1 つしかないため、それを無効にすることはできません。LinearLayout 内にあるビューを無効にする必要があります。

于 2016-09-02T21:49:34.107 に答える