12

hoạt động của tôi có android: windowSoftInputMode = "adjustResize" và hoạt động phù hợp trong Android 2.1:Honeycomb (3.1) adjustResize không còn hoạt động nữa?

Trước khi bàn phím mềm xuất hiện

Before soft keyboard appears

Với bàn phím

Keyboard behavior in 2.1 (good)

Tuy nhiên, trong Tổ ong bàn phím mềm không thay đổi kích thước bố cục của tôi, thay vào đó nó bao gồm các nút:

Keyboard behavior in Honeycomb (bad)

Hành vi tương tự trên cả tab Galaxy 10 inch và Motorola Xoom.

Tôi đã làm lại bố cục của mình nhiều lần để làm cho nó tương thích với Honeycomb, không có kết quả. Bàn phím mềm sẽ đẩy lên một chế độ xem EditText, chứ không phải các nút.

Here is a simple app project demonstrating the problem.

Sửa: Link cố định.

Việc bố trí sử dụng:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:layout_alignParentBottom="true"> 
     <Button 
      android:id="@+id/save" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Save" /> 
     <Button 
      android:id="@+id/cancel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Cancel" /> 
    </LinearLayout> 
    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"> 
     <EditText 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" /> 
    </ScrollView> 
</RelativeLayout> 

Vấn đề chỉ liên quan tôi đã tìm thấy là this, nhưng vô hiệu hóa tăng tốc phần cứng không có hiệu lực đối với tôi. Tôi cũng đọc số Android guide on making your app compatible with input methods nhưng không nhận ra bất kỳ giải pháp nào ở đó.

Tôi đang làm điều gì đó rõ ràng là sai? Hay đây có phải là lỗi mà mọi người có thêm thông tin không?

+0

Có thể liên quan: nếu bạn đặt chiều cao Scrollview thành fill_parent, trong Honeycomb, các nút sẽ trở thành không thể nhấp vì Scrollview trùng lặp các nút và chúng mất tiêu điểm. Tuy nhiên, không phải là trường hợp trong 2.1. –

+0

Dường như nó hoạt động tốt với tôi trong trình giả lập 3.1, cả có và không có 'android: windowSoftInputMode'. Tất cả những gì tôi đã làm là tạo một dự án mới và thay thế tệp main.xml bằng cách bố trí của bạn. Tôi không thể tải xuống dự án mẫu của bạn. –

+0

@Nicklas Rất tiếc, trong trình mô phỏng tôi thấy rằng cả 3.1 và 2.1 đều có vấn đề: bàn phím mềm bao gồm các nút. Tôi đã sửa liên kết. –

Trả lời

14

Xin chào, tôi đã kiểm tra mã của bạn.

vui lòng xóa dòng dưới đây trong "AndroidManifest.xml "

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

và sau đó kiểm tra sau đó điều chỉnh kích thước màn hình của bạn

Nếu bất kỳ truy vấn plz cho tôi biết

+0

Bạn là ai - chủ đề đó sẽ phá vỡ kích thước trong 3.1! Bây giờ tại sao lại như vậy? Tôi sẽ tìm một giải pháp toàn màn hình thay thế ngay bây giờ, nhưng cảm ơn rất nhiều cho tip! –

+0

Tôi đã xác nhận rằng đó là phần toàn màn hình của chủ đề phá vỡ nó trong Honeycomb - điều có ý nghĩa cho rằng các ứng dụng Honeycomb đều là "toàn màn hình". Tuy nhiên, tôi cần thiết lập đó vì tôi đang nhắm mục tiêu 2.1, Honeycomb dường như thiếu khả năng tương thích ngược ở đó. Có thể gửi báo cáo lỗi khi tôi có cơ hội. Cảm ơn một lần nữa! –

+0

Nathan, bạn có gửi báo cáo lỗi cho điều này không? –

3

Chế độ điều chỉnh kích hoạt chắc chắn hoạt động; bạn sẽ thấy nó hoạt động trong suốt giao diện người dùng.

Vì vậy, câu hỏi đặt ra là: tại sao nó không được đặt cho ứng dụng của bạn?

Điều đầu tiên bạn có thể sử dụng "cửa sổ adb shell dumpsys" để xem thông tin về cửa sổ của bạn, bao gồm chế độ nhập mềm được đặt bởi WindowManager.LayoutParams. Giá trị được in ở đó là số nguyên; xem xét ý nghĩa của nó: http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_NOTHING

Nếu cửa sổ của bạn không thực sự có điều chỉnhĐặt lại ở đó, bạn sẽ cần phải tìm hiểu và xem tại sao lại không được đặt. Mọi thứ khác là bình thường, nếu bạn đặt chế độ đó trên hoạt động, nó sẽ được đặt trên cửa sổ như mọi khi. Bạn sẽ muốn tìm một cái gì đó khác mà bạn đang làm đó là làm cho nó được thay đổi trong cửa sổ của bạn.

Nếu cửa sổ của bạn có điều chỉnhĐược chọn, thì vì lý do nào đó, cấu trúc phân cấp của bạn không thực sự thay đổi kích thước. Không có sự khác biệt lớn tôi biết trong nền tảng có thể gây ra điều này để không làm việc (và một lần nữa bạn có thể thấy rằng nó hoạt động ở nơi khác trong giao diện người dùng chứng khoán). Điều đầu tiên tôi khuyên bạn nên làm ở đây là sử dụng HierarchyViewer để xem điều gì đang xảy ra trong hệ thống phân cấp khung nhìn của bạn.

+0

Cảm ơn rất nhiều - Lá cờ dường như không được đặt trong cửa sổ đổ. Đang cố gắng tìm ra vấn đề ... –

+0

Dianne, bạn có thể cho chúng tôi biết tại sao Chủ đề đó vô hiệu hóa cờ đó không? – nmr

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