简体   繁体   中英

How to add padding in drawable

I have custom EditText drawable:

edit_text_selector

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

    <item android:state_focused="true" android:drawable="@drawable/edit_text_background_on" />
    <item android:state_focused="false" android:drawable="@drawable/edit_text_background_off" />

</selector>

edit_text_background_on

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

    <item>
        <shape>
            <solid android:color="@color/main_color" />
        </shape>
    </item>

    <item
        android:bottom="1.5dp"
        android:left="1.5dp"
        android:right="1.5dp">
        <shape>
            <solid android:color="@color/background_color" />
        </shape>
    </item>

    <item 
        android:bottom="5.0dp" >
        <shape>
            <solid android:color="@color/background_color" />
        </shape>
    </item>

</layer-list>

edit_text_background_off

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

    <item>
        <shape>
            <solid android:color="@color/edittext_off_color" />
        </shape>
    </item>

    <item
        android:bottom="1.5dp"
        android:left="1.5dp"
        android:right="1.5dp">
        <shape>
            <solid android:color="@color/background_color" />
        </shape>
    </item>

    <item android:bottom="5.0dp">
        <shape>
            <solid android:color="@color/background_color" />
        </shape>
    </item>

</layer-list>

I want to have padding in EditText so that the text is not in the most left position of EditText.

Tried to use this but doesn't work.

<inset android:insetLeft="6dip"/>

How can I add padding in EditText drawable? I don't want to put it in every EditText in my XML layout.

For adding the padding in EditText,you need to create the custom editText, override the onLayout() method and set the padding in that method such as

public class CustomEditText extends EditText
{
  public CustomEditText(Context context) 
  {
     super(context);
  }

  public CustomEditText(Context context,AttributeSet attrs) 
  {
     super(context, attrs);
  }

  public CustomEditText(Context context,AttributeSet  attrs, int defStyle) 
   {
     super(context, attrs, defStyle);
   }

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    // set the padding here
    this.setPadding(20,20,20, 20);
    super.onLayout(changed, left, top, right, bottom);
}
}

I found this .. Hope it will help. This is the logic . you need to customize it. This is main Layout where you can add edittext

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#eee">

    <!-- Input Group -->
    <EditText style="@style/Widget.Group.Top" />
    <EditText style="@style/Widget.Group" />
    <EditText style="@style/Widget.Group.Bottom" />

    <!-- Single item -->
    <EditText style="@style/Widget.Group.Single" />

</LinearLayout>

and add some style in you style file like this

<style name="Widget.Group" parent="@android:style/Widget">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">46dp</item>
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:layout_marginRight">10dp</item>
        <item name="android:layout_marginTop">-1dp</item> <!-- Ensures we don't get a 2 dp top stroke -->
        <item name="android:padding">4dp</item>
        <!--<item name="android:background">@drawable/bg_input_group</item>-->
    </style>

    <style name="Widget.Group.Top">
        <item name="android:layout_marginTop">10dp</item>
        <!--<item name="android:background">@drawable/bg_input_group_top</item>-->
    </style>

    <style name="Widget.Group.Bottom">

        <item name="android:layout_marginTop">20dp</item>
        <!--<item name="android:background">@drawable/bg_input_group_bottom</item>-->
    </style>

    <style name="Widget.Group.Single" parent="Widget.Group.Top">
        <!--<item name="android:background">@drawable/bg_input_group_single</item>-->
    </style>

For more details click here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM