2010-03-06 46 views
23

Tôi đang phát triển và ứng dụng Android sử dụng SDK 1.6. Tôi đang sử dụng TimePicker và tôi không muốn bàn phím mềm xuất hiện khi bạn nhấp vào các chữ số trong số TimePicker. Tôi chỉ muốn thay đổi TimePicker bằng các nút dấu cộng và trừ. Tôi đã thử sử dụng android:focusable="false"android:focusableInTouchMode="false" hy vọng những người sẽ làm điều đó, nhưng họ dường như không làm bất cứ điều gì. Có cách nào để làm việc này không?Tắt nhập bằng bàn phím trên Android TimePicker

Trả lời

49

cố gắng sử dụng:

myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); 

để vô hiệu hóa tập trung vào các văn bản lượt xem của NumberPickers nội bộ

+4

Điều này cũng hoạt động cho DatePicker, chỉ cần sử dụng DatePicker.FOCUS_BLOCK_DESCENDANTS thay thế. – swanson

+3

Chỉ cần sử dụng ViewGroup.FOCUS_BLOCK_DESCENDANTS .. Tất cả đều có cùng giá trị - __ - ' – Tobrun

+2

Bạn cũng có thể sử dụng android: descendantFocusability = "blocksDescendants" trong xml. – Borzh

0

Bạn có thể làm điều này:

InputMethodManager imm = 
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

Vui lòng tham khảo cho câu hỏi này cũng như:

Close/hide the Android Soft Keyboard

+0

Điều này không hiệu quả với TimePicker Tôi cũng đã làm điều đó trước đó với một EditText.Ngoài ra, tôi không chỉ muốn một cách để ẩn bàn phím mềm, nhưng về cơ bản để làm cho EditTexts bên trong TimePicker không bao giờ có tiêu điểm Tôi chỉ wa nt các giá trị được thay đổi bằng cách sử dụng các nút dấu cộng và trừ, và tôi không muốn người dùng có thể nhấp vào khu vực nơi các con số và có con trỏ xuất hiện. Tôi đã cố gắng tìm ra cách để có được một tham chiếu đến những đứa trẻ bên trong TimePicker để làm điều này ... nhưng tôi không thể tìm ra cách. – ashughes

0

Điều này làm không hoạt động cho các điều khiển EditText ... Nếu bạn nhấn & giữ phím Menu trên EditText mà bạn đã đặt InputType.TYPE_NULL và gọi là immhideSoftInputFromWindow(...), bàn phím mềm sẽ vẫn bật lên cùng với bản sao/dán Tùy chọn menu.

+1

PS: điều này đã được đề cập đến bài trước về việc sử dụng InputtMethodManager, xin lỗi, tôi có nghĩa là để sử dụng nút "phản hồi" !! – Laurent

2

Không biết nếu điều này làm việc cho TimePicker, nhưng tôi thấy các paramter đúng để sử dụng để ngăn chặn bàn phím hiển thị khi tập trung một chỉnh sửa văn bản hoặc bằng cách sử dụng sao chép và dán đơn trên nội dung của nó:

Thứ nhất, bạn nên gọi setInputType(InputType.TYPE_NULL) trên editText.

Tiếp theo nhanh chóng InputTypeManager:

InputMethodManager imm = 
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 

Và sau đó, hãy gọi hideSoftInputFromWindow() trên đối tượng imm, nhưng sử dụng InputMethodManager.HIDE_NOT_ALWAYS như tham số thứ hai thay vì 0 (như khuyến cáo trong câu trả lời đầu tiên):

imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS) 

Điều này sẽ ngăn bàn phím mềm xuất hiện khi nhấp/lấy nét điều khiển EditText này, ngay cả khi sử dụng phím menu để thực hiện thao tác sao chép/dán.

PS: nếu bạn muốn ngăn các thao tác sao chép/dán, bạn có thể gọi editText.setEditable(false) nhưng sau đó bạn sẽ không thể thay đổi động nội dung của EditText.

2

Tôi chỉ cố gắng (nhắm mục tiêu 4.0.3)

myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); 

không thành công. Sau khi tìm kiếm google cho "BLOCK_DESCENDANTS TimePicker android không làm việc" i theo hit

http://code.google.com/p/android/issues/detail?id=38369 

nơi bài cuối cùng, đó là bởi một "Dự án thành viên", khẳng định:

"focusability Hậu duệ đề cập đến khả năng của một điểm để lấy nét, như trong tập trung truyền tải bằng bàn phím, bi xoay hoặc d-pad. Nó không ảnh hưởng đến các sự kiện cảm ứng theo thiết kế.

Nếu bạn cần chặn sự kiện chạm từ chế độ xem hậu duệ, hãy cân nhắc ghi đè trênInterceptTouchEvent trong chế độ xem gốc và trả về true khi chặn sự kiện chạm. Điều này sẽ gây ra MotionEvents được gửi đến phụ huynh chặn cho đến khi con trỏ cuối cùng đi lên "

6

Another Way Thêm này trong XML của bạn:..

android:descendantFocusability="blocksDescendants"

3

XML:

<NumberPicker 
    ... 
    android:descendantFocusability="blocksDescendants" /> 
Các vấn đề liên quan