Làm cách nào để thêm biểu tượng bên trong chế độ xem EditText trong Android?


141

Tôi muốn thêm biểu tượng "tìm kiếm" để xuất hiện bên trong một EditTextcạnh trái? chẳng hạn như hộp tìm kiếm trong ứng dụng Facebook Android?

Câu trả lời:


432

Sử dụng android:drawableLefttài sản trên EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />

3
xin lỗi vì câu hỏi không rõ ràng, tôi muốn thêm một nút, vì vậy khi tôi nhấp vào nó, nó sẽ thực hiện một số hành động
Adham

20
Đây chỉ là giải pháp tôi mong đợi, được đưa ra tiêu đề tìm kiếm.
Thomas Ahle

32
Ngoài ra, điều chỉnh phần đệm bằng cách sử dụng drawablePaddingtài sản.
Ryan R

Vì vậy, kích thước của biểu tượng có thể vẽ được và tôi nên đặt nó trong thư mục nào?
Kalpesh Lakhani

2
@KalpeshLakhani: Thông thường edittext và drawables nên là 32dp theo nguyên tắc thiết kế Android: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong

30

Bạn có thể đặt drawableLeft trong XML theo đề xuất của marcos , nhưng bạn cũng có thể muốn đặt nó theo chương trình - ví dụ như để đáp ứng với một sự kiện. Để thực hiện việc này, hãy sử dụng phương thức setCompoundDrawablesWithIntrincisBound (int, int, int, int) :

EditText editText = findViewById(R.id.myEditText);

// Set drawables for left, top, right, and bottom - send 0 for nothing
editTxt.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myDrawable, 0, 0, 0);

Điều này đặt nền cho EditText, không phải biểu tượng / hình ảnh ở "Cạnh trái" được đề cập rõ ràng trong câu hỏi.
Paresh Mayani

@Paresh - đó là lý do tại sao tôi xóa câu trả lời. Bây giờ tôi đã chỉnh sửa để bao gồm một giải pháp lập trình bên cạnh giải pháp XML gốc.
Peter Ajtai

1
Làm thế nào để lập trình ẩn biểu tượng? Khi nào chỉnh sửa hộp?
Săn

1
@Hunt - Chỉ cần đặt coumound drawable nullkhi chế độ xem được nhấp.
Peter Ajtai

27

Nếu bạn muốn sử dụng drawable mặc định của Android, bạn có thể sử dụng @android:drawable/ic_menu_searchnhư thế này:

<EditText android:id="@+id/inputSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:hint="Search product.."
    android:inputType="textVisiblePassword"/>



-1

Sử dụng bố cục tương đối và đặt nút ở vị trí bên trái của chế độ xem văn bản chỉnh sửa và đặt phần đệm bên trái của chế độ xem văn bản của bạn theo kích thước của nút. Tôi không thể nghĩ ra một cách hay để làm điều đó mà không khó mã hóa phần đệm: /

Bạn cũng có thể sử dụng công cụ apk để sắp xếp giải nén apk facebook và xem các tệp bố cục của nó.


1
Tôi muốn đề cập rằng việc dịch ngược là vi phạm luật pháp ở nhiều quốc gia, ví dụ như trong toàn Liên minh châu Âu, vì vậy hãy cẩn thận :)
Paweł Byszewski
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.