2012-12-18 34 views
3

我相信我可能在Android UI中發現了一個錯誤,但我想確保我沒有做錯什麼。這裏是我正在運行的代碼的簡化版本,導致了這個問題。這個監聽器在我的UI中被設置在一個特定的NumberPicker上,並且它正確地禁用/啓用了一些東西,但是如果用戶改變了它禁用的其他NumberPicker的值,它的行爲有點奇怪。NumberPicker在禁用時不灰色

它仍然正確地禁用了輸入,但它未能灰顯該值,使其看起來仍然處於啓用狀態。這是打算?難道我做錯了什麼?

NumberPicker.OnValueChangeListener diceChangeListener = new NumberPicker.OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     View parent = (View) picker.getParent();  

     if (newVal == 0) { 
      ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(false); 
     } else if (oldVal == 0) { 
      ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(true); 
     } 
    } 
}; 

讓我知道是否有更好的方法來做到這一點,或者如果這是一個合法的錯誤。如果它是一個錯誤,是否有辦法解決它?

編輯:這是在XML中diceCountPicker1的定義:

<NumberPicker 
    android:id="@+id/diceCountPicker1" 
    android:layout_width="48dp" 
    android:layout_height="128dp" 
    android:descendantFocusability="blocksDescendants" 
    /> 

編輯2:

我在模擬器進行了測試,證實該問題不傑利貝恩之前存在(4.1) 。它在ICS中正常工作。這是...煩人。但我現在可能能夠忍受它。我會把這個問題留給潛在的方法來解決這個bug,但是它在我看來就像一個真正的bug,我懷疑它可以被修復。

+0

你可以發佈一些佈局代碼,以便如何在xml文件中聲明你的'diceCountPicker1'嗎? –

+0

使用NumberPicker的XML更新了問題。 – Utoxin

+0

查看下面發佈的解決方案。嘗試一下,它適合我。謝謝。 –

回答

1

好吧,沒有額外的反饋意見,我會繼續並關閉它。以下是我所知道的:

這似乎是Jellybean中引入的錯誤。我已經在模擬器中進行了測試,並且UI在ICS和更早版本中按預期工作。目前,我只是要處理這個問題,並試圖提交官方錯誤報告。

0

試試這種方法。

 NumberPicker npicker = (NumberPicker) findViewById(R.id.diceCountPicker1); 
     npicker.setMaxValue(100); 
     npicker.setMinValue(0); 

     npicker.setOnValueChangedListener(new OnValueChangeListener() { 
      @Override 
      public void onValueChange(NumberPicker picker, int oldVal, 
        int newVal) { 
       // Conditions for Enable/Disable picker     
       if (newVal == 0) { 
        picker.setEnabled(false); 
       } else if (oldVal == 0) { 
        picker.setEnabled(true); 
       } 
      } 
     }); 

它適用於我,它根據添加條件的啓用/禁用正常運行。

謝謝。

+0

這不是我正在做的。我有一個NumberPicker上的Listener,它禁用了其他幾個NumberPickers。與我的代碼相比,我看不出有什麼不同。 – Utoxin

+0

我會猜測你在Honeycomb或ICS中測試過它嗎? – Utoxin

0

在NumberPicker和DatePicker中設置android:enabled="false" xml佈局不會使Android 4.0.4設備上的控件變灰。然而,通過編程setEnabled(false)按預期工作。

相關問題