8

Tôi có một ứng dụng Android có chứa một ViewPager với 2 đoạn. Đoạn đầu tiên chứa một trường EditText. Khi ứng dụng khởi chạy, trường đó ngay lập tức lấy nét và bàn phím mềm được khởi chạy (mà tôi muốn xảy ra). Đoạn thứ hai chỉ chứa một danh sách (không có trường văn bản có thể chỉnh sửa). Khi tôi vuốt từ đoạn 1 đến đoạn 2, tôi muốn bàn phím biến mất. Không có gì tôi đã cố gắng dường như làm việc. Bàn phím không chỉ ở chế độ xem, nó tiếp tục cập nhật trường EditText của đoạn 1.Ẩn bàn phím mềm trong ứng dụng Android từ các phân đoạn ViewPager

Tôi biết tôi đang sử dụng mã không chính xác để ẩn bàn phím hoặc đặt bàn phím ở vị trí không chính xác. Nếu bất cứ ai có thể đăng một ví dụ về việc thực hiện chính xác nó sẽ được đánh giá rất nhiều!

nỗ lực mới nhất của tôi là đặt mã mà nên ẩn bàn phím trong onDetach đoạn 1() của phương pháp:

@Override 
public void onDetach() 
{ 
    super.onDetach(); 

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

    // I'VE TRIED ALL THREE BELOW, NONE OF THEM WORK... 

     // imm.hideSoftInputFromWindow(this.messageView.getWindowToken(), 0); 
     // imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
     // this.context.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
} 

Trả lời

10

Xem this answer. Về cơ bản, bạn cần phải có bàn phím OnPageChangeListener của ViewPager để ẩn bàn phím cho bạn. (Nếu bạn muốn hình ảnh động swiping bạn vẫn mịn màng, làm điều này trong onPageScrollStateChanged thay vì onPageSelected.)

@Override 
public void onPageScrollStateChanged(int state) 
{ 
    if (state == ViewPager.SCROLL_STATE_IDLE) 
    { 
     if (mViewPager.getCurrentItem() == 0) 
     { 
      // Hide the keyboard. 
      ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)) 
       .hideSoftInputFromWindow(mViewPager.getWindowToken(), 0); 
     } 
    } 
} 
0

Trong AndroidManifest của bạn, bạn nên thêm vào Hoạt động khai android: windowSoftInputMode = "stateHidden":

<activity 
     android:name="YourActivity"    
     android:windowSoftInputMode="stateHidden">   
</activity> 

Và trong cách bố trí của bạn xóa từ EditText dành cho trẻ em requestFocus:

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="15dp" 
    android:ems="10" > 
    <requestFocus /> 
</EditText> 
+0

Này sẽ không ngăn chặn bàn phím hiển thị tất cả các thời gian? Tôi chỉ muốn ẩn nó trên phân đoạn 2. – Jabari

+0

Điều này ngăn hiển thị bàn phím chức năng khi hoạt động được nạp với các mảnh của bạn. Nhưng nếu bạn nhấp vào một số EditText, softkeyboard sẽ được hiển thị. Ảnh hưởng đến tất cả các phân đoạn được tải bởi Hoạt động của bạn. Để ẩn luôn và không hiển thị không bao giờ phím chức năng, trong tệp kê khai, bạn nên sử dụng stateAlwaysHidden trong android: windowSoftInputMode. Xin lỗi vì tiếng Anh của tôi. – ClarkXP

+0

Hầu hết các công trình nhưng khi bạn chuyển về một đoạn khác, bàn phím không bị ẩn. – Timmmm

0
getActivity().getWindow().setSoftInputMode(
        WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
Các vấn đề liên quan