2009-01-20 44 views
14

Tôi có một ứng dụng có bố cục chính của chân dung (nó được cố định làm hình chân dung) và có một vị trí để nhập văn bản. Tôi muốn khởi chạy như một cửa sổ bật lên theo hướng ngang với hình nền mờ đi. Tôi biết có một Widget Popup, nhưng bất kỳ ý tưởng để xoay hộp soạn thảo văn bản sẽ là tuyệt vời. Xoay nó vào chế độ xem dọc (chỉ hộp văn bản) khi bàn phím bị trượt cũng sẽ hoạt động, như sẽ hiển thị màn hình mới với hộp văn bản trên bàn phím trượt.Làm thế nào để hiển thị một hộp soạn thảo văn bản "trên" màn hình?

Trả lời

37

Giải pháp dễ nhất cho vấn đề của bạn là hiển thị EditText trong Hoạt động theo chủ đề riêng biệt dialog mà bạn khởi chạy từ trong Hoạt động chính (chân dung cố định).

Hoạt động EditText không được định hướng cố định, vì vậy nó sẽ xoay như bạn mong đợi khi bạn trượt bàn phím ra.

Tạo Text Entry Hoạt động

Tạo Hoạt động mới chỉ chứa các EditText Xem và bất cứ điều gì khác mà bạn muốn bao gồm (có thể là OK/Cancel nút và có thể là một nhãn?). Trong tệp kê khai đặt chủ đề của nó thành Theme.Dialog.

<activity android:name="TextEntryActivity" 
      android:label="My Activity" 
      android:theme="@android:style/Theme.Dialog"/> 

Làm mờ hoặc làm mờ hoạt động sau hộp thoại được thực hiện bằng cách sửa đổi thuộc tính cửa sổ của hoạt động nền trước (hộp thoại nhập văn bản). Trong đó phương thức onCreate sử dụng getWindow().setFlags để áp dụng làm mờ cho bất kỳ Hoạt động nền nào.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, 
        WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

Lễ ra mắt và Đọc Được nhập giá trị từ Hoạt động nhập văn bản

Sử dụng startActivityForResult để khởi động Hoạt động nhập văn bản. Trong cuộc gọi Hoạt động đó, hãy gọi setResult để trả về chuỗi văn bản được nhập trong mục đích trả về bằng cách sử dụng các kỹ thuật được mô tả trong this post.

Ghi đè phương thức onActivityResult để nghe kết quả từ Hoạt động phụ.

Triggering Launch trên bàn phím xúc

Bạn có thể khởi động Hoạt động nhập văn bản bất cứ khi nào bạn muốn, nhưng nếu bạn muốn luôn hiển thị nó khi bàn phím được tiếp xúc bạn có thể chụp sự kiện này explicitely.

Bắt đầu bằng cách thêm thuộc tính android:configChanges vào mục nhập tệp kê khai của Hoạt động. Nó phải được đăng ký để nghe cho keyboardHidden.

android:configChanges="keyboardHidden" 

Trong hoạt động đó, ghi đè onConfigurationChanged để khởi chạy hoạt động nhập văn bản.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    Intent i = new Intent(this,TextEntryActivity.class);  
    startActivityForResult(i, STATIC_INTEGER_VALUE); 
} 

Bạn có thể muốn kiểm tra để xác nhận bàn phím đang được hiển thị (thay vì ẩn) bằng biến NewConfig trước khi khởi chạy Hoạt động nhập văn bản.

Bạn cũng có thể muốn sử dụng cùng một kỹ thuật để tự động trở lại từ hoạt động nhập văn bản khi bàn phím bị ẩn.

+0

cảm ơn vì sự thấu hiểu của bạn. – Chrispix

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