8

Tôi đang làm việc trên một trò chơi và tôi muốn có vị trí EditText phía trên bàn phím mềm khi bật lên.Có một EditText trên bàn phím mềm với Chế độ xem GL trong nền theo chương trình

Đây là những gì mã của tôi trông giống như khi tôi xây dựng Xem Hierarchy trong Hoạt động chính của tôi:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 

viewGroup = new RelativeLayout(this); 
    viewGroup.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    view = new GameView(this); 
     RelativeLayout.LayoutParams vLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     vLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
     view.setLayoutParams(vLayoutParams); 
     viewGroup.addView(view); 

    editText = new GameEditText(this); 
     RelativeLayout.LayoutParams etLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
     etLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     editText.setGravity(Gravity.BOTTOM); 
     editText.setLayoutParams(etLayoutParams); 
    viewGroup.addView(editText); 

setContentView(viewGroup); 

Đây là AndroidManifest.xml của tôi (phần những vấn đề):

<activity 
    android:name="app.ember.MainActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:launchMode="singleTask" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:screenOrientation="sensorLandscape" 
    android:windowSoftInputMode="adjustResize" 
    > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

tắm Thông tin:

  • GameView = là GLSurfaceView
  • GameEditText = là EditText
  • Nếu tôi nhận xét dòng đầu tiên (getWindow(). AddFlags ...) Sau đó, chế độ xem trò chơi sẽ nâng lên và chế độ xem không hiển thị, trừ khi tôi bắt đầu nhập nội dung.
  • Rời rằng dòng đầu tiên trong làm cho các trò chơi không pan, nhưng không di chuyển các lĩnh vực EditText trở lên và bàn phím bao gồm các lĩnh vực EditText

Bất kỳ lời đề nghị?

Dưới đây là một số ảnh chụp màn hình lạ mắt:

game Không Bàn phím:

Game With No Keyboard

game Với Bàn phím và WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS bộ (những gì nó trông giống như trong màn hình để hiển thị hệ thống phân cấp lớp):

Keyboard with monitor

Trò chơi có bàn phím và những cờ này KHÔNG được đặt. enter image description here

Đây là kết quả mong muốn: Desired Output

+0

Ông có thể không đặt EditText trong trung tâm ẩn, sau đó hiển thị nó khi bạn hiển thị bàn phím? Để lại các cờ không được đặt để nó đặt bàn phím bên dưới EditText. –

+0

@Dave S Cảm ơn bạn đã trả lời, Thật không may tôi muốn EditText ôm đầu bàn phím. Có EditText ở trung tâm của màn hình sẽ hoạt động, nhưng đó không phải là thiết kế giao diện người dùng mong muốn, vì nó sẽ không đẹp trên các thiết bị có nhiều không gian dọc hơn. Tôi có mã đặt đối tượng EditText để hiển thị/ẩn khi người dùng cần chỉnh sửa văn bản trong trò chơi. Người dùng không chạm vào đối tượng EditText để hiển thị bàn phím. Thay vào đó, người dùng chạm vào một nơi nào đó trong trò chơi và kích hoạt để hiển thị bàn phím và sau đó đặt EditText để hiển thị và có thể chỉnh sửa. –

+0

Bạn cũng có thể thực hiện các điều chỉnh thủ công dựa trên thay đổi chiều cao bố cục khi bàn phím hiển thị. Xem liên kết này để biết thêm: http://stackoverflow.com/questions/16788959/is-there-any-way-in-android-to-get-the-height-of-virtual-keyboard-of-device –

Trả lời

-1

Đặt Editbox như đáy mẹ.

android:layout_alignParentBottom="true" 

và trong file manifest làm cho đầu vào mềm adjustResize/Pan

android:windowSoftInputMode="adjustResize" 

"adjustResize": cửa sổ chính của hoạt động luôn thay đổi kích cỡ để nhường chỗ cho bàn phím mềm trên màn hình.

"adjustPan": Cửa sổ chính của hoạt động không được định lại kích thướ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ổ.

Kiểm tra this để biết thêm

+0

nếu bạn nhìn vào mã của tôi, nó đang làm chính xác điều này. Ngoài ra, tệp kê khai của tôi được đặt thành "adjustResize". –

-1

Trong add manifest

android: windowSoftInputMode = "adjustPan"

Nó sẽ tự động điều chỉnh bàn phím của bạn dưới đây EditText bạn

Các vấn đề liên quan