nổi Tôi đang viết một ứng dụng có sử dụng đoạn mã sau để vẽ một EditText trên màn hình trên ứng dụng đang chạy:Android - Bàn phím không xuất hiện trong cửa sổ
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
PixelFormat.TRANSLUCENT);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(mEditText, params);
Các xml cho EditText là:
<EditText
android:id="@+id/mEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:inputType="textAutoComplete|text"
android:focusable="true"
android:focusableInTouchMode="true" />
Tuy nhiên, việc tập trung vào việc này không mang lại bàn phím. Tôi cũng đã cố gắng lập trình đưa nó lên với một onFocusListener:
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
Log.d("", "Has focus");
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
} else {
Log.d("", "Lost focus");
}
}
});
Nhưng mặc dù điều đó được gọi, như được thấy từ logcat, không có gì xảy ra. Phương pháp duy nhất tôi đã tìm thấy cho đến nay để hiển thị bàn phím đang sử dụng:
getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0);
Nhưng điều đó dường như nhập vào màn hình chứ không phải vào văn bản. Tôi cũng đã cố gắng lấy nét rõ ràng khi văn bản được hiển thị nhưng không có kết quả.
Tôi đoán vấn đề là vì tôi đang sử dụng "cửa sổ nổi" nhưng phải có cách để thực hiện tác vụ này dưới dạng ứng dụng như máy tính nổi tồn tại trên cửa hàng playstore. ? Tôi đang bối rối :(
Làm cách nào để nhận được giá trị từ văn bản chỉnh sửa? – rup35h