2013-03-28 185 views
10

我正在開發Android應用程序。在裏面的某個地方,我正在顯示NumberPicker小部件。NumberPicker中的最小值和最大值之間的塊轉換

如何禁用最小值和最大值之間的轉換?

我的意思,我使用了一些選擇器,爲0的最小值和9999它看起來像這樣的最大值,

number picker

通過這種方式,用戶可以快速扔零件跳轉從0到9999. 我不希望這種行爲。現在的數字選擇器小部件看起來像一個封閉的圓圈,我正試圖看看如何在最小值和最大值之間精確地分解圓,以便從最小值和最大值中看起來像這樣:

number picker minimum value number picker maximum value

我怎樣才能做到這一點?

我曾嘗試:

  • 我找遍了NumberPicker API中,它似乎並不像這一點是一個可以利用的方法簡單地設置。
  • 我認爲我可以用方法setDisplayedValues(String[] displayedValues)在最小值和最大值之前添加空字符串,以便在最小值之前或最大值之後沒有顯示值,但用戶仍然會能夠通過它們或WORSE:選擇空值。

任何想法?我是否必須弄髒自己的手並在小部件實施中挖掘?觸摸監聽器裏面也許?

回答

5

是不是setWrapSelectorWheel(false)from the API)?

+0

不,這不是它。 – Leeeeeeelo

+0

它有什麼問題?如果將其設置爲「false」,則不能從最小值到最大值,反之亦然。 – sgdesmet

+0

這是解決方案,只要確保setWrapSelectorWheel(false)方法在初始化選取器值後調用。 – SergioM

10

您必須在號碼選取器上撥打setWrapSelectorWheel(false)。小心,儘管你setMinimumValue(...)setMaximumValue(...)之前呼叫setWrapSelectorWheel(false)。如果你不這樣做,它根本無法工作。

和我一樣,您可能正在尋找一種通過xml來實現這一點的方法,但當時沒有辦法。

2

正如所指出的那樣,setWrapSelectorWheel(false)會訣竅,因此應接受所提供的答案之一。

一般情況下,調用這個命令的工作:

picker.setMinValue(0); 
picker.setMaxValue(stringValuesArray.length - 1); 
picker.setDisplayedValues(stringValuesArray); 
picker.setValue(defaultValue); 
picker.setWrapSelectorWheel(false); 
+0

謝謝,它適用於我! – codezjx

相關問題