2013-10-24 22 views
12

Tôi đã hoạt động với một editText ở giữa. Khi tôi nhấp vào editText, bàn phím sẽ xuất hiện và màn hình sẽ di chuyển để editText nằm ngay phía trên bàn phím, bao gồm các nội dung khác bên dưới.Cuộn màn hình lên khi bàn phím xuất hiện

Tôi không muốn đổi kích thước hoặc thêm đệm vào bố cục. Tôi chỉ cần màn hình cuộn lên đầu số lượng không gian mà tôi cần để xem thêm những thứ khác bên dưới. Nói cách khác, tôi muốn chọn vị trí của editText khi bàn phím xuất hiện. Cũng sẽ đủ nếu màn hình cuộn lên hoàn toàn, cho tôi thấy phần cuối của bố cục.

Tôi cố gắng để đưa các bố trí trong một scrollview thêm mã này trên EditText

editText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //make the view scroll down to the bottom 
      scrollView.scrollTo(0, scrollView.getBottom()); 

     } 
    }); 

nhưng nó không hoạt động. Có ai có ý tưởng gì không? Cảm ơn bạn trước!

Trả lời

11

Tôi đã có một vấn đề tương tự một lần, tôi giải quyết sử dụng:

android:windowSoftInputMode="adjustResize" 

trong AndroidManifest.xml.

Nếu bạn sử dụng RelativeLayout bắt đầu với phần tử đáy phải được nối với phía dưới cùng và sau đó móc phần tử kia phía trên trước đó.

Nếu bạn sử dụng LinearLayout, hãy bọc nó trong RelativeLayout và móc LinearLayout vào parentBottom.

Bằng cách này, khi bàn phím bật lên, bạn sẽ thấy phần dưới cùng của bố cục.

Hy vọng điều này sẽ hữu ích.

+5

gì "Nếu bạn sử dụng một RelativeLayout bắt đầu với những yếu tố dưới đó phải móc xuống dưới phụ huynh và móc các yếu tố khác trên Trước." Nghĩa là? Tôi đã không nhấn mạnh những gì bạn có nghĩa là bằng móc, bạn có thể giải thích thêm xin vui lòng? – Josh

+0

Điều gì sẽ xảy ra nếu một phần của màn hình tôi muốn hiển thị khi bàn phím hiển thị không được nối với phía dưới cùng của cha mẹ nhưng ở giữa trang? –

+0

Không hoạt động trong phần tử getActivity() của tôi getWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – delive

3

này làm việc cho tôi

android:windowSoftInputMode="stateVisible|adjustResize" 

trong androidmanifest cho hoạt động

+0

Anh ấy không muốn đổi kích thước. – Sid

16

sử dụng android: windowSoftInputMode = "adjustPan"

"adjustResize"

Các hoạt động của chính cửa sổ luôn được thay đổi kích thước để nhường chỗ cho phím mềm trên màn hình.

"adjustPan"

cửa sổ chính của hoạt động không được thay đổi kích cỡ để nhường chỗ cho bàn phím mềm. Thay vào đó, nội dung của cửa sổ được tự động quét để tập trung hiện tại không bao giờ bị che khuất bởi bàn phím và người dùng luôn có thể xem nội dung họ đang nhập. Điều này nói chung là ít mong muốn hơn thay đổi kích thước, bởi vì người dùng có thể cần phải đóng bàn phím mềm để có được tại và tương tác với các phần che khuất của cửa sổ.

Ví dụ trọ file manifest của bạn: -

 <activity 
    android:windowSoftInputMode="adjustPan" 
    android:name=".MainActivity"></activity> 

Cuối answer.But chắc chắn nó sẽ giúp bất cứ ai.

2

Tôi đã có một vấn đề này, tôi giải quyết bằng mã này:

myEdittext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        myscrollview.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          View lastChild = myscrollview.getChildAt(myscrollview.getChildCount() - 1); 
          int bottom = lastChild.getBottom() + myscrollview.getPaddingBottom(); 
          int sy = myscrollview.getScrollY(); 
          int sh = myscrollview.getHeight(); 
          int delta = bottom - (sy + sh); 
          myscrollview.smoothScrollBy(0, delta); 
         } 
        }, 200); 
       } 
      }); 
Các vấn đề liên quan