วิธีเพิ่มไอคอนภายในมุมมอง EditText ใน Android


141

ฉันต้องการเพิ่มไอคอน "ค้นหา" เพื่อให้ปรากฏภายในEditTextด้านซ้ายหรือไม่ เช่นกล่องค้นหาในแอพ Facebook Android?

คำตอบ:


433

ใช้android:drawableLeftคุณสมบัติบน EditText

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

3
ขอโทษสำหรับคำถามที่ไม่ชัดเจนฉันต้องการเพิ่มปุ่มดังนั้นเมื่อคลิกที่มันมันจะดำเนินการบางอย่าง
Adham

20
นี่เป็นเพียงวิธีการแก้ปัญหาที่ฉันคาดหวังจากการกำหนดหัวเรื่องการค้นหา
โทมัส Ahle

33
นอกจากนี้ให้ปรับการขยายโดยใช้drawablePaddingคุณสมบัติ
Ryan R

แล้วขนาดของไอคอนแบบวาดได้และขนาดไหนที่ฉันควรวางไว้?
Kalpesh Lakhani

2
@KalpeshLakhani: โดยปกติ EditText และภาพวาดควรจะ 32dp ตามแนวทางการออกแบบหุ่นยนต์: developer.android.com/design/style/metrics-grids.html
Lee Hong Yi

30

คุณสามารถตั้งค่า drawableLeft ใน XML ตามที่marcosแนะนำแต่คุณอาจต้องการตั้งค่าแบบเป็นโปรแกรมเช่นในการตอบกลับเหตุการณ์ เมื่อต้องการทำสิ่งนี้ให้ใช้เมธอดsetCompoundDrawablesWithIntrincisBounds (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);

ชุดนี้มีพื้นหลังเป็น EditText ไม่ใช่ไอคอน / รูปภาพที่ "Left Edge" ซึ่งถูกกล่าวถึงอย่างชัดเจนในคำถาม
Paresh Mayani

@Paresh - ซึ่งเป็นเหตุผลที่ฉันลบคำตอบ ตอนนี้ฉันได้แก้ไขเพื่อรวมโซลูชันเชิงโปรแกรมเพิ่มเติมจากโซลูชัน XML ดั้งเดิม
Peter Ajtai

1
วิธีซ่อนไอคอนโดยทางโปรแกรมหรือไม่ เมื่อมีการคลิกกล่องแก้ไข?
ล่า

1
@Hunt - เพียงกำหนด coumound drawable เป็นnullเมื่อมีการคลิกมุมมอง
ปีเตอร์ Ajtai

27

หากคุณต้องการใช้ drawable เริ่มต้นของ Android คุณสามารถใช้@android:drawable/ic_menu_searchสิ่งนี้:

<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"/>


0

ใช้เค้าโครงที่สัมพันธ์กันและตั้งค่าปุ่มให้จัดชิดซ้ายของมุมมองแก้ไขข้อความและตั้งค่าการขยายด้านซ้ายของมุมมองข้อความเป็นขนาดของปุ่มของคุณ ฉันไม่สามารถคิดวิธีที่ดีในการทำโดยไม่ต้องเข้ารหัส padding อย่างหนัก: /

นอกจากนี้คุณยังสามารถใช้เครื่องมือ apkเพื่อแยกไฟล์ zip ของ Facebook และดูที่ไฟล์เลย์เอาต์


1
ฉันอยากจะพูดถึงว่าการถอดแยกชิ้นส่วนนั้นผิดกฎหมายในหลาย ๆ ประเทศเช่นสหภาพยุโรปทั้งหมดดังนั้นโปรดระวัง :)
Paweł Byszewski

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.