2015-09-15 4 views
10

मैं एक EditText के लिए एक कस्टम drawable स्थापित करने के लिए कोशिश कर रहा हूँ के लिए एक कस्टम पृष्ठभूमि drawable बनाएं नीचे के रूप में उम्मीद:एक EditText

except

तो मैं यह लिखा कस्टम drawable:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 

     android:paddingBottom="12dp" 
     android:paddingLeft="36dp" 
     android:paddingRight="12dp" 
     android:paddingTop="12dp"> 
<item> 
    <shape> 
     <corners android:radius="6dp"/> 
     <solid android:color="@android:color/white"/> 
     <stroke 
      android:width="1dp" 
      android:color="#BBBBBB"/> 
    </shape> 
</item> 
<item 
    android:width="32dp" 
    android:gravity="left"> 
    <shape android:shape="rectangle"> 
     <size android:width="32dp"/> 
     <corners 
      android:bottomLeftRadius="6dp" 
      android:topLeftRadius="6dp"/> 
     <solid android:color="#AAAAAA"/> 
    </shape> 
</item> 
<item android:left="8dp"> 
    <bitmap 
     android:gravity="left" 
     android:src="@drawable/ic_email" 
     android:tileMode="disabled"/> 
</item> 
</layer-list> 

पूर्वावलोकन में परिणाम काफी अच्छा है (एंड्रॉइड स्टूडियो द्वारा नियंत्रित नहीं किए गए विभिन्न कोने आकार को छोड़कर)

result in preview

लेकिन डिवाइस में, यह पूरी तरह से काम नहीं करता है ... दूसरा आइटम फैला हुआ है और चौड़ाई विशेषता का सम्मान नहीं करता है।

result in device

मुझे पता है, मैं एक 9-पैच के साथ यह कर सकते हैं, लेकिन मैं जानना चाहता हूँ अगर यह ड्रॉएबल के साथ संभव है?

उत्तर

22

इसे एक पृष्ठभूमि के साथ करने योग्य और संपादन टेक्स्ट पर एक यौगिक बनाने के लिए प्रबंधित किया गया।

bg_edittext_icon.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 
     <shape> 
      <corners android:radius="6dp" /> 
      <solid android:color="@android:color/white" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <solid android:color="#AAAAAA" /> 
      <corners android:radius="6dp" /> 
     </shape> 
    </item> 
    <item 
     android:left="34dp"> 
     <!-- left is icon size + 2x side padding around icon--> 
     <!-- 18 + 8 + 8 --> 
     <shape> 
      <solid android:color="@android:color/white" /> 
      <corners android:radius="6dp" 
       android:topRightRadius="6dp" 
       android:topLeftRadius="0dp" 
       android:bottomRightRadius="6dp" 
       android:bottomLeftRadius="0dp"/> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <corners android:radius="6dp" /> 
      <solid android:color="@android:color/transparent" /> 
      <stroke 
       android:width="1dp" 
       android:color="#BBBBBB" /> 
     </shape> 
    </item> 
</layer-list> 

अपने लेआउट में, इस तरह इसका इस्तेमाल:

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/bg_edittext_icon" 
    android:inputType="textEmailAddress" 
    android:drawableLeft="@drawable/ic_email_white_18dp" 
    android:drawablePadding="20dp" 
    android:paddingLeft="8dp" 
    android:paddingRight="12dp" 
    android:paddingTop="12dp" 
    android:paddingBottom="12dp" 
    android:hint="Email" 
    /> 
paddingLeft ग्रे बॉक्स के अंदर आइकन गद्दी और drawablePadding ग्रे बॉक्स + संपादित की गद्दी के अंदर गद्दी के साथ

क्षेत्र।

Result from real device

आप इसे पसंद उम्मीद है कि:

यहाँ Genymotion (उर्फ, वास्तविक डिवाइस) से परिणाम है!

+0

धन्यवाद @ pdegand59 यह एक आकर्षण की तरह काम करता है;) – sagix