EditText được thêm vào không phải là TextInputEditText. Vui lòng chuyển sang sử dụng lớp học đó thay thế


92

Tôi đang sử dụng EditTextbên trong a TextInputLayout, nhưng sau khi nâng cấp thư viện hỗ trợ lên 23.2.0, tôi nhận được cảnh báo này trong logcat, Sự khác biệt giữa thông thường EditTextvà a là TextInputEditTextgì? Tôi dường như không thể tìm thấy bất kỳ tài liệu nào cho nó.


Tôi đã nâng cấp thư viện hỗ trợ của mình lên 23.2.1 nhưng vẫn không thể giải quyết TextInputEditText trong mã của tôi . Làm thế nào bạn giải quyết nó?
Edijae Crusar

Câu trả lời:


109

Tôi cũng đang thắc mắc điều này, Daniel Wilson đã thu thập tài liệu, nhưng đối với con mắt chưa qua đào tạo thì điều đó không có nhiều ý nghĩa. Đây là nội dung tất cả về nội dung: "chế độ trích xuất" là đề cập đến kiểu xem được hiển thị khi không gian quá nhỏ, ví dụ như phong cảnh trên điện thoại. Tôi đang sử dụng Galaxy S4 với Bàn phím Google làm trình chỉnh sửa phương thức nhập (IME).

Giao diện người dùng ngang không có IME hiển thị

Dựa trên tiêu điểm (trên Mô tả), bạn có thể thấy TextInputLayouthành động đẩy gợi ý ra bên ngoài trình chỉnh sửa. Không có gì đặc biệt ở đây, đây là những gì TextInputLayoutphải làm.

Giao diện người dùng ngang không có IME hiển thị

Trường Tên trống chỉnh sửa UI ngang

Chỉnh sửa Tên bạn có thể thấy rằng IME không cung cấp cho bạn gợi ý về những gì bạn đang chỉnh sửa.

Trường Tên trống chỉnh sửa UI ngang

Trường mô tả trống chỉnh sửa giao diện người dùng ngang

Chỉnh sửa Mô tả, bạn có thể thấy rằng IME cung cấp cho bạn một gợi ý về những gì bạn đang chỉnh sửa.

Trường mô tả trống chỉnh sửa giao diện người dùng ngang

XML bố cục

Sự khác biệt giữa hai trường là kiểu EditTextVS của chúng TextInputEditText. Điều quan trọng ở đây là TextInputLayoutandroid:hintEditText chứ không phải EditText, đây là trường hợp khi TextInputEditTextmột vài dòng mã Java tạo ra sự khác biệt lớn.

Trường tên

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Name"
    >
    <EditText
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</android.support.design.widget.TextInputLayout>

Trường mô tả

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:minLines="4"
        android:scrollbars="vertical"
        />
</android.support.design.widget.TextInputLayout>

3
Tôi đã nâng cấp thư viện hỗ trợ của mình lên 23.2.1 nhưng vẫn không thể giải quyết TextInputEditText trong mã của tôi. Làm thế nào bạn giải quyết nó?
Edijae Crusar

Bạn có thư viện thiết kế không? Điều này không được hỗ trợ.
TWiStErRob

1
Lưu ý nhanh: theo các tài liệu, android:hinttài sản được cho là đi vào TextInputEditTextthay vì TextInputLayout.
DriesOeyen

1
@luxsypher, tôi đã kết thúc việc bỏ nó và sử dụng cách khác là đưa EditText vào TextInputLayout
Edijae Crusar

1
@ jeet.chanchawat đó là một kênh truyền hình dự báo, vì vậy nó an toàn. Bạn nên luôn sử dụng loại chung nhất cung cấp cho bạn chức năng (= API) cần thiết. Sử dụng TextInputEditTextlà một chi tiết triển khai của giao diện người dùng.
TWiStErRob

34

Không có tài liệu về nó, nhưng lớp học là một lớp bình thường EditTextvới một tính năng bổ sung duy nhất:

Sử dụng lớp này cho phép chúng tôi hiển thị gợi ý trong IME khi ở chế độ 'trích xuất'.

Cụ thể nó thiết lập EditorInfo.hintText. Bạn sẽ nhận thấy trong TextInputLayoutlớp, bạn có thể chỉ định gợi ý và nó xuất hiện hơn là một phần của EditTexttiện ích con.

Nếu bạn cần làm điều đó, bạn nên sử dụng một TextInputEditTextđể nó chú ý đến thông tin gợi ý mà bạn đã chỉ định trong TextInputLayout.


2
bất kỳ ví dụ? Tôi không biết bạn đang đề xuất điều gì
behelit

4

Về cơ bản chúng giống nhau, nhưng tôi nghĩ chúng TextInputEditTextcó nhiều tính năng hơn và có thể là thuộc tính. Tôi đã thay đổi TextInputEditTextvà mọi thứ hoạt động và trông như trước đây với tiêu chuẩn EditText.


Tôi đã sử dụng TextInputLayout, tôi đang hỏi về một giải pháp thay thế cho EditText có tên là TextInputEditText
Silvia H

Xin lỗi, tôi đang nói về TextInputEditText nhưng đã nói về bố cục. Tôi đã chỉnh sửa câu trả lời
Nick Mowen

0

Sự khác biệt duy nhất là khi thiết bị của bạn ở chế độ ngang, TextInputEditTextsẽ hiển thị gợi ý, EditTextkhông.


-3

Tôi gặp sự cố này và vừa xóa dòng này trong tệp xml của mình:

android: fitsSystemWindows = "true"

và lỗi đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.