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 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):
Trò chơi có bàn phím và những cờ này KHÔNG được đặt.
Đây là kết quả mong muốn:
Ô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. –
@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. –
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 –