2009-02-07 3 views
21

Tôi đang tìm một thứ gì đó giống như các phần riêng lẻ của hộp thoại bộ chọn ngày. Chế độ xem cho phép bạn nhập số nguyên (và chỉ số nguyên) mà bạn có thể giới hạn (từ 1 đến 10 ví dụ), nơi bạn có thể sử dụng bàn phím hoặc các mũi tên trong chính chế độ xem đó. Nó có tồn tại không?Có chế độ xem để nhập số nguyên trong Android không?

Nó dành cho hộp thoại. Một hộp thoại sẵn sàng để yêu cầu một số nguyên cũng sẽ giúp ích.

Trả lời

23

Tiện ích NumberPicker có lẽ là thứ bạn muốn. Thật không may nó nằm ở com.android.internal.Widget.NumberPicker mà chúng tôi không thể có được thông qua các phương tiện bình thường.

Có hai cách để sử dụng nó:

  1. Sao chép mã từ nguồn android
  2. Sử dụng phản xạ để truy cập các widget

Đây là xml để sử dụng nó trong một bố cục:

<com.android.internal.widget.NumberPicker 
    android:id="@+id/picker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

Đây là sự phản ánh để đặt cài đặt NumberPicker (Tôi chưa thử nghiệm điều này):

Object o = findViewById(R.id.picker); 
Class c = o.getClass(); 
try 
{ 
    Method m = c.getMethod("setRange", int.class, int.class); 
    m.invoke(o, 0, 9); 
} 
catch (Exception e) 
{ 
    Log.e("", e.getMessage()); 
} 

Vì đây là tiện ích nội bộ và không nằm trong SDK, khả năng tương thích trong tương lai có thể bị hỏng nếu bạn sử dụng phản chiếu. Nó sẽ là an toàn nhất để cuộn của riêng bạn từ nguồn.

Nguồn gốc cho thông tin này được chia sẻ trong Google Group này.

+1

Làm sao người ta thực sự đọc giá trị từ NumberPicker? –

7

Tiện ích nội bộ NumberPicker đã được lấy từ mã nguồn Android và được đóng gói để bạn sử dụng và bạn có thể tìm thấy nó here. Hoạt động tuyệt vời!

EDIT: Original liên kết là xuống, bạn có thể tìm thấy một bản sao của widget here

+0

@AlanMoore vì vậy có vẻ như .... Đây là nguồn của nó mà tôi đã sử dụng trong ứng dụng nguồn mở của mình: http://code.google.com/p/tippytipper/source/browse/trunk/Tippy%20Tipper/src/net /mandaria/tippytipper/widgets/NumberPicker.java –

+0

Liên kết thứ hai xuất hiện cũng bị hỏng –

+0

@ForrestBice Tôi đã sắp xếp lại mã nguồn vào sử dụng dự án thư viện Android. Vị trí mới của tệp đó có tại đây: https://code.google.com/p/tippytipper/source/browse/trunk/Tippy%20Tipper%20Library/src/net/mandaria/tippytipperlibrary/widgets/NumberPicker.java –

0

Bạn có thể sử dụng với EditText android:inputType="number"

<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:inputType="number" android:layout_width="wrap_content"></EditText>