[
  {
    "path": ".gitignore",
    "content": "*.iml\n.gradle\n/local.properties\n/.idea/workspace.xml\n/.idea/libraries\n.DS_Store\n/build\n/captures\n.externalNativeBuild\n"
  },
  {
    "path": ".idea/gradle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GradleSettings\">\n    <option name=\"linkedExternalProjectsSettings\">\n      <GradleProjectSettings>\n        <option name=\"distributionType\" value=\"DEFAULT_WRAPPED\" />\n        <option name=\"externalProjectPath\" value=\"$PROJECT_DIR$\" />\n        <option name=\"modules\">\n          <set>\n            <option value=\"$PROJECT_DIR$\" />\n            <option value=\"$PROJECT_DIR$/app\" />\n            <option value=\"$PROJECT_DIR$/customizededittext\" />\n          </set>\n        </option>\n        <option name=\"resolveModulePerSourceSet\" value=\"false\" />\n      </GradleProjectSettings>\n    </option>\n  </component>\n</project>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"NullableNotNullManager\">\n    <option name=\"myDefaultNullable\" value=\"android.support.annotation.Nullable\" />\n    <option name=\"myDefaultNotNull\" value=\"android.support.annotation.NonNull\" />\n    <option name=\"myNullables\">\n      <value>\n        <list size=\"4\">\n          <item index=\"0\" class=\"java.lang.String\" itemvalue=\"org.jetbrains.annotations.Nullable\" />\n          <item index=\"1\" class=\"java.lang.String\" itemvalue=\"javax.annotation.Nullable\" />\n          <item index=\"2\" class=\"java.lang.String\" itemvalue=\"edu.umd.cs.findbugs.annotations.Nullable\" />\n          <item index=\"3\" class=\"java.lang.String\" itemvalue=\"android.support.annotation.Nullable\" />\n        </list>\n      </value>\n    </option>\n    <option name=\"myNotNulls\">\n      <value>\n        <list size=\"4\">\n          <item index=\"0\" class=\"java.lang.String\" itemvalue=\"org.jetbrains.annotations.NotNull\" />\n          <item index=\"1\" class=\"java.lang.String\" itemvalue=\"javax.annotation.Nonnull\" />\n          <item index=\"2\" class=\"java.lang.String\" itemvalue=\"edu.umd.cs.findbugs.annotations.NonNull\" />\n          <item index=\"3\" class=\"java.lang.String\" itemvalue=\"android.support.annotation.NonNull\" />\n        </list>\n      </value>\n    </option>\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_7\" default=\"true\" project-jdk-name=\"1.8\" project-jdk-type=\"JavaSDK\">\n    <output url=\"file://$PROJECT_DIR$/build/classes\" />\n  </component>\n  <component name=\"ProjectType\">\n    <option name=\"id\" value=\"Android\" />\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ProjectJDKs.UI\">\n        <settings>\n          <last-edited>1.8</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/CustomEditText.iml\" filepath=\"$PROJECT_DIR$/CustomEditText.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/app/app.iml\" filepath=\"$PROJECT_DIR$/app/app.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/customizededittext/customizededittext.iml\" filepath=\"$PROJECT_DIR$/customizededittext/customizededittext.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/runConfigurations.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"RunConfigurationProducerService\">\n    <option name=\"ignoredProducers\">\n      <set>\n        <option value=\"org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer\" />\n        <option value=\"org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer\" />\n        <option value=\"org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer\" />\n      </set>\n    </option>\n  </component>\n</project>"
  },
  {
    "path": "README.md",
    "content": "# CustomEditText\nA Collection of features are wrapped into single UI element. By adding a line code in xml, able to access these features,rectangular view with corner radius, font color etc.\n\n# Features\n1.EditText shape  -> rounded corner with radius and changing BG color, Border color.     \n2.Clear icon visibility when typing   \n3.Font change via xml     \n4.Password visibility icon when inputtype in password mode.      \n5.Change the password toggle color.  \n6.Add country code in prefix (+91)  \n7.Change prefix textcolor.\n    \nthe above features are done through xml file.    \n\n<a href=\"http://www.methodscount.com/?lib=com.libizo%3Acustomedittext%3A1.0.2\"><img src=\"https://img.shields.io/badge/Methods count-84-e91e63.svg\"/></a>  <a href=\"http://www.methodscount.com/?lib=com.libizo%3Acustomedittext%3A1.0.2\"><img src=\"https://img.shields.io/badge/Size-34 KB-e91e63.svg\"/></a>\n\n<a href='https://bintray.com/rajagopalr3/CustomEditText/customedittext/_latestVersion'><img src='https://api.bintray.com/packages/rajagopalr3/CustomEditText/customedittext/images/download.svg'></a>\n\n<a href='https://bintray.com/rajagopalr3/CustomEditText/customedittext?source=watch' alt='Get automatic notifications about new \"customedittext\" versions'><img src='https://www.bintray.com/docs/images/bintray_badge_color.png'></a>\n\n![Screenshot](screenshot_1.png)\n\n\n# Implementation    \n\n# Using Jitpack:\n\n[![](https://jitpack.io/v/Rajagopalr3/CustomEditText.svg)](https://jitpack.io/#Rajagopalr3/CustomEditText)\n\nStep 1. Add the JitPack repository to your build file\n\nAdd it in your root build.gradle at the end of repositories:\n\n\tallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url 'https://jitpack.io' }\n\t\t}\n\t}\nStep 2. Add the dependency\n\n\tdependencies {\n\t        implementation 'com.github.Rajagopalr3:CustomEditText:6f095021b5'\n\t}\n\n\n\n# Using JCenter(Bintray) - DEPRECATED\n\n```\nAdd it in your root build.gradle at the end of repositories:\n\n\tallprojects {\n\t\trepositories {\n \t\t\tjcenter()\n\t\t}\n\t}\n\n\ndependencies {\n    implementation 'com.libizo:customedittext:1.0.6'\n}\n\n\n```\n# Import as Module\nDownload the below .aar file and add as module into your project\n\n[Donwload module])https://github.com/Rajagopalr3/CustomEditText/blob/master/customedittext-1.0.4.aar\n\n\n```\n\ndependencies {\n     implementation project(':customedittext')\n}\n\nAdd this into settings.gradle file:\ninclude ':customedittext'\n\n```\n\n# XML\n\n```\n <com.libizo.CustomEditText\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"First Name\"\n            android:inputType=\"phone\"\n            android:text=\"9876543210\"\n            app:libIZO_setPrefix=\"+91\"\n            app:libIZO_setPrefixTextColor=\"#FF4081\"\n            app:libIZO_clearIconTint=\"#8f1f15\"\n            app:libIZO_setBorderColor=\"#8f1f15\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setClearIconVisible=\"true\"\n            app:libIZO_setCornerRadius=\"4dp\"\n            app:libIZO_setStrokeWidth=\"2dp\"/>\n\n                      \n```\n\n\n# Set Font\n  Add your font files into assets folder. In string.xml files find your font files like below\n\n```\n    <string name=\"DroidSansBold\">DroidSans-Bold.ttf</string>\n    \n```\n\n\n# Attributes\n\n |        Attributes               |            Description            |         Default Value         |\n | ------------------------------- | -------------------------------   | --------------------------    |\n | libIZO_setBorderView            | if true rectangle view enabled    |  false in default             |\n | libIZO_setBorderColor           | set border color of edittext      |  grey color in default        |\n | libIZO_setStrokeWidth           | set border width in dp            |  1 dp in default              |\n | libIZO_setBackgroundColor       | set BG color of edittext          |  transparent color in default |\n | libIZO_setCornerRadius          | set corner radius of edittextview |  1 dp in default              |\n | libIZO_setFont                  | set font name in string           |  android's default font       |\n | libIZO_setClearIconVisible      | if true clear icon is enabled     |  false in default             |\n | libIZO_clearIconTint            | set clear icon tint color         |  grey color in default        |\n | libIZO_hideShowPasswordIconTint | set password icon tint color      |  grey color in default        |\n | libIZO_setPrefix                | set the country code as prefix    |  empty in default             |\n | libIZO_setPrefixTextColor       | set prefix text color             |  default color                |   \n    \n # License\n \n ```\n \nCopyright 2017 Rajagopal\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n \n```  \n    \n"
  },
  {
    "path": "_config.yml",
    "content": "theme: jekyll-theme-cayman"
  },
  {
    "path": "app/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "app/build.gradle",
    "content": "apply plugin: 'com.android.application'\n\nandroid {\n    compileSdkVersion 28\n    defaultConfig {\n        applicationId \"com.custom\"\n        minSdkVersion 15\n        targetSdkVersion 28\n        versionCode 1\n        versionName \"1.0\"\n        testInstrumentationRunner \"android.support.test.runner.AndroidJUnitRunner\"\n    }\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n}\n\ndependencies {\n    implementation fileTree(include: ['*.jar'], dir: 'libs')\n    implementation 'com.android.support:appcompat-v7:28.0.0'\n    implementation 'com.android.support:design:28.0.0'\n    implementation 'com.android.support.constraint:constraint-layout:1.1.3'\n    testImplementation 'junit:junit:4.12'\n    androidTestImplementation 'com.android.support.test:runner:1.0.2'\n    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'\n    implementation project(':customedittext')\n}\n"
  },
  {
    "path": "app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile\n"
  },
  {
    "path": "app/src/androidTest/java/com/custom/ExampleInstrumentedTest.java",
    "content": "package com.custom;\n\nimport android.content.Context;\nimport android.support.test.InstrumentationRegistry;\nimport android.support.test.runner.AndroidJUnit4;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\n\nimport static org.junit.Assert.*;\n\n/**\n * Instrumented test, which will execute on an Android device.\n *\n * @see <a href=\"http://d.android.com/tools/testing\">Testing documentation</a>\n */\n@RunWith(AndroidJUnit4.class)\npublic class ExampleInstrumentedTest {\n    @Test\n    public void useAppContext() throws Exception {\n        // Context of the app under test.\n        Context appContext = InstrumentationRegistry.getTargetContext();\n\n        assertEquals(\"com.libIZO\", appContext.getPackageName());\n    }\n}\n"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.custom\">\n\n    <application\n        android:allowBackup=\"true\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:roundIcon=\"@mipmap/ic_launcher_round\"\n        android:supportsRtl=\"true\"\n        android:theme=\"@style/AppTheme\">\n        <activity android:name=\"com.custom.MainActivity\">\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n    </application>\n\n</manifest>"
  },
  {
    "path": "app/src/main/java/com/custom/MainActivity.java",
    "content": "package com.custom;\n\nimport android.support.v7.app.AppCompatActivity;\nimport android.os.Bundle;\nimport android.util.Log;\nimport android.view.inputmethod.EditorInfo;\nimport android.widget.EditText;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class MainActivity extends AppCompatActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n    }\n}\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_launcher_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportHeight=\"108\"\n    android:viewportWidth=\"108\">\n    <path\n        android:fillColor=\"#26A69A\"\n        android:pathData=\"M0,0h108v108h-108z\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M9,0L9,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,0L19,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M29,0L29,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M39,0L39,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M49,0L49,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M59,0L59,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M69,0L69,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M79,0L79,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M89,0L89,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M99,0L99,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,9L108,9\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,19L108,19\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,29L108,29\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,39L108,39\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,49L108,49\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,59L108,59\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,69L108,69\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,79L108,79\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,89L108,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,99L108,99\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,29L89,29\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,39L89,39\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,49L89,49\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,59L89,59\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,69L89,69\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,79L89,79\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M29,19L29,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M39,19L39,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M49,19L49,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M59,19L59,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M69,19L69,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M79,19L79,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:aapt=\"http://schemas.android.com/aapt\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportHeight=\"108\"\n    android:viewportWidth=\"108\">\n    <path\n        android:fillType=\"evenOdd\"\n        android:pathData=\"M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z\"\n        android:strokeColor=\"#00000000\"\n        android:strokeWidth=\"1\">\n        <aapt:attr name=\"android:fillColor\">\n            <gradient\n                android:endX=\"78.5885\"\n                android:endY=\"90.9159\"\n                android:startX=\"48.7653\"\n                android:startY=\"61.0927\"\n                android:type=\"linear\">\n                <item\n                    android:color=\"#44000000\"\n                    android:offset=\"0.0\" />\n                <item\n                    android:color=\"#00000000\"\n                    android:offset=\"1.0\" />\n            </gradient>\n        </aapt:attr>\n    </path>\n    <path\n        android:fillColor=\"#FFFFFF\"\n        android:fillType=\"nonZero\"\n        android:pathData=\"M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z\"\n        android:strokeColor=\"#00000000\"\n        android:strokeWidth=\"1\" />\n</vector>\n"
  },
  {
    "path": "app/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".MainActivity\">\n\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_margin=\"10dp\"\n        android:orientation=\"vertical\"\n        android:padding=\"10dp\"\n        android:visibility=\"visible\">\n\n\n        <com.libizo.CustomEditText\n            android:id=\"@+id/edit\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Enter your mobile number\"\n            android:inputType=\"number\"\n            android:padding=\"10dp\"\n            android:text=\"9876543210\"\n            app:libIZO_clearIconTint=\"#d4d2d3\"\n            app:libIZO_setBorderColor=\"#d4d2d3\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setClearIconVisible=\"true\"\n            app:libIZO_setCornerRadius=\"3dp\"\n            app:libIZO_setFont=\"@string/robotoRegular\"\n            app:libIZO_setPrefix=\"+91\"\n            app:libIZO_setPrefixTextColor=\"@color/colorAccent\"\n            app:libIZO_setStrokeWidth=\"1dp\" />\n\n\n        <com.libizo.CustomEditText\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Username\"\n            android:inputType=\"textEmailAddress\"\n            android:paddingLeft=\"15dp\"\n            android:paddingTop=\"12dp\"\n            android:paddingRight=\"12dp\"\n            android:paddingBottom=\"12dp\"\n            android:text=\"\"\n            android:textSize=\"15sp\"\n            app:libIZO_setBorderColor=\"#d4d2d3\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setCornerRadius=\"20dp\"\n            app:libIZO_setFont=\"@string/robotoRegular\" />\n\n        <com.libizo.CustomEditText\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Password\"\n            android:inputType=\"textEmailAddress\"\n            android:paddingLeft=\"15dp\"\n            android:paddingTop=\"12dp\"\n            android:paddingRight=\"12dp\"\n            android:paddingBottom=\"12dp\"\n            android:text=\"\"\n            android:textColor=\"@color/colorAccent\"\n            android:textSize=\"15sp\"\n            app:libIZO_clearIconTint=\"@color/colorAccent\"\n            app:libIZO_setBorderColor=\"#d4d2d3\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setClearIconVisible=\"true\"\n            app:libIZO_setCornerRadius=\"20dp\"\n            app:libIZO_setFont=\"@string/robotoRegular\" />\n\n        <com.libizo.CustomEditText\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Last Name\"\n            android:inputType=\"textEmailAddress\"\n            android:text=\"\"\n            app:libIZO_setFont=\"@string/robotoRegular\" />\n\n\n        <com.libizo.CustomEditText\n            android:id=\"@+id/t4\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Type something...\"\n            android:inputType=\"numberPassword\"\n            android:text=\"qwerty@123\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setCornerRadius=\"4dp\" />\n\n        <com.libizo.CustomEditText\n            android:id=\"@+id/t5\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_margin=\"5dp\"\n            android:hint=\"Type something...\"\n            android:inputType=\"numberPassword\"\n            android:text=\"qwerty@123\"\n            app:libIZO_hideShowPasswordIconTint=\"#085808\"\n            app:libIZO_setBorderColor=\"#0a780a\"\n            app:libIZO_setBorderView=\"true\"\n            app:libIZO_setCornerRadius=\"4dp\" />\n\n    </LinearLayout>\n\n</RelativeLayout>\n"
  },
  {
    "path": "app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\" />\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\" />\n</adaptive-icon>"
  },
  {
    "path": "app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\" />\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\" />\n</adaptive-icon>"
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"colorPrimary\">#3F51B5</color>\n    <color name=\"colorPrimaryDark\">#303F9F</color>\n    <color name=\"colorAccent\">#FF4081</color>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">CustomEditText</string>\n    <string name=\"robotoBold\">Roboto-Bold.ttf</string>\n    <string name=\"robotoRegular\">Roboto-Regular.ttf</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar\">\n        <!-- Customize your theme here. -->\n        <item name=\"colorPrimary\">@color/colorPrimary</item>\n        <item name=\"colorPrimaryDark\">@color/colorPrimaryDark</item>\n        <item name=\"colorAccent\">@color/colorAccent</item>\n    </style>\n\n</resources>\n"
  },
  {
    "path": "app/src/test/java/com/custom/ExampleUnitTest.java",
    "content": "package com.custom;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * Example local unit test, which will execute on the development machine (host).\n *\n * @see <a href=\"http://d.android.com/tools/testing\">Testing documentation</a>\n */\npublic class ExampleUnitTest {\n    @Test\n    public void addition_isCorrect() throws Exception {\n        assertEquals(4, 2 + 2);\n    }\n}"
  },
  {
    "path": "build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    ext.kotlin_version = '1.3.21'\n\n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.3.1'\n        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'\n        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'\n        classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        google()\n        jcenter()\n    }\n}\n\ntask clean(type: Delete) {\n    delete rootProject.buildDir\n}\n"
  },
  {
    "path": "customedittext/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "customedittext/build.gradle",
    "content": "apply plugin: 'com.android.library'\n\nandroid {\n    compileSdkVersion 28\n\n    defaultConfig {\n        minSdkVersion 15\n        targetSdkVersion 28\n        versionCode 5\n        versionName \"1.4\"\n        testInstrumentationRunner \"android.support.test.runner.AndroidJUnitRunner\"\n\n    }\n\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n\n}\n\ndependencies {\n    implementation fileTree(dir: 'libs', include: ['*.jar'])\n    implementation 'com.android.support:appcompat-v7:28.0.0'\n    testImplementation 'junit:junit:4.12'\n    androidTestImplementation 'com.android.support.test:runner:1.0.2'\n    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'\n    implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"\n}\n"
  },
  {
    "path": "customedittext/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile\n"
  },
  {
    "path": "customedittext/src/androidTest/java/com/libizo/ExampleInstrumentedTest.java",
    "content": "package com.libizo;\n\nimport android.content.Context;\nimport android.support.test.InstrumentationRegistry;\nimport android.support.test.runner.AndroidJUnit4;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\n\nimport static org.junit.Assert.*;\n\n/**\n * Instrumented test, which will execute on an Android device.\n *\n * @see <a href=\"http://d.android.com/tools/testing\">Testing documentation</a>\n */\n@RunWith(AndroidJUnit4.class)\npublic class ExampleInstrumentedTest {\n    @Test\n    public void useAppContext() throws Exception {\n        // Context of the app under test.\n        Context appContext = InstrumentationRegistry.getTargetContext();\n\n        assertEquals(\"com.libizo.test\", appContext.getPackageName());\n    }\n}\n"
  },
  {
    "path": "customedittext/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.libizo\" />\n"
  },
  {
    "path": "customedittext/src/main/java/com/libizo/CustomEditText.kt",
    "content": "package com.libizo\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.content.res.TypedArray\nimport android.graphics.Canvas\nimport android.graphics.Color\nimport android.graphics.Paint\nimport android.graphics.PorterDuff\nimport android.graphics.drawable.Drawable\nimport android.graphics.drawable.GradientDrawable\nimport android.os.Build\nimport android.support.annotation.ColorInt\nimport android.support.v4.content.ContextCompat\nimport android.support.v4.graphics.drawable.DrawableCompat\nimport android.support.v7.widget.AppCompatEditText\nimport android.text.Editable\nimport android.text.TextUtils\nimport android.text.method.DigitsKeyListener\nimport android.text.method.PasswordTransformationMethod\nimport android.util.AttributeSet\nimport android.util.TypedValue\nimport android.view.MotionEvent\nimport android.view.inputmethod.EditorInfo\nimport android.widget.TextView\n\nimport java.util.Objects\n\n/*\n * Created by ${Raja} on 25-Dec-17.\n */\n\nclass CustomEditText : AppCompatEditText {\n    private val DEFAULTCOLOR = Color.parseColor(\"#808080\")\n    private var mBackgroundColor: Int = 0\n    private var clearIconTint: Int = 0\n    private var hideShowIconTint: Int = 0\n    private var prefixTextColor: Int = 0\n    private var cPadding: Int = 0\n    private var cPaddingLeft: Int = 0\n    private var cPaddingTop: Int = 0\n    private var cPaddingRight: Int = 0\n    private var cPaddingBottom: Int = 0\n    private var mCornerRadius: Float = 0.toFloat()\n    private var mStrokeWidth = 1f\n    private var mOriginalLeftPadding = -1f\n    private var isClearIconVisible: Boolean = false\n    private var isPassword = false\n    private var isShowingPassword = false\n    private var imgCloseButton: Drawable? = null\n    private var drawableEnd: Drawable? = null\n    var font: String? = null\n        private set\n    private var mPrefix: String? = null\n\n    var prefix: String?\n        get() = this.mPrefix\n        set(prefix) {\n            this.mPrefix = prefix\n            calculatePrefix()\n            invalidate()\n        }\n\n    constructor(context: Context) : super(context) {\n        init(context, null)\n    }\n\n    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {\n        init(context, attrs)\n    }\n\n    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {\n        init(context, attrs)\n    }\n\n    private fun init(context: Context, attrs: AttributeSet?) {\n\n        val a = context.obtainStyledAttributes(attrs, R.styleable.CustomEditText)\n        imgCloseButton = ContextCompat.getDrawable(getContext(), android.R.drawable.ic_menu_close_clear_cancel)\n        cPadding = a.getDimensionPixelSize(R.styleable.CustomEditText_android_padding, -1)\n        cPaddingLeft = a.getDimensionPixelSize(R.styleable.CustomEditText_android_paddingLeft, DEFAULT_PADDING)\n        cPaddingTop = a.getDimensionPixelSize(R.styleable.CustomEditText_android_paddingTop, DEFAULT_PADDING)\n        cPaddingRight = a.getDimensionPixelSize(R.styleable.CustomEditText_android_paddingRight, DEFAULT_PADDING)\n        cPaddingBottom = a.getDimensionPixelSize(R.styleable.CustomEditText_android_paddingBottom, DEFAULT_PADDING)\n        isClearIconVisible = a.getBoolean(R.styleable.CustomEditText_libIZO_setClearIconVisible, false)\n        val isBorderView = a.getBoolean(R.styleable.CustomEditText_libIZO_setBorderView, false)\n        val mNormalColor = a.getColor(R.styleable.CustomEditText_libIZO_setBorderColor, DEFAULTCOLOR)\n        val cursorColor = a.getColor(R.styleable.CustomEditText_libIZO_setCursorColor, 0)\n        mBackgroundColor = a.getColor(R.styleable.CustomEditText_libIZO_setBackgroundColor, Color.TRANSPARENT)\n        mStrokeWidth = a.getDimension(R.styleable.CustomEditText_libIZO_setStrokeWidth, mStrokeWidth)\n        hideShowIconTint = a.getColor(R.styleable.CustomEditText_libIZO_hideShowPasswordIconTint, DEFAULTCOLOR)\n        clearIconTint = a.getColor(R.styleable.CustomEditText_libIZO_clearIconTint, DEFAULTCOLOR)\n        this.font = a.getString(R.styleable.CustomEditText_libIZO_setFont)\n        mPrefix = a.getString(R.styleable.CustomEditText_libIZO_setPrefix)\n        prefixTextColor = a.getColor(R.styleable.CustomEditText_libIZO_setPrefixTextColor, 0)\n        mCornerRadius = a.getDimension(R.styleable.CustomEditText_libIZO_setCornerRadius, 1f)\n\n        if (isBorderView) {\n            setBackGroundOfLayout(getShapeBackground(mNormalColor))\n            setCursorColor(cursorColor)\n        } else {\n            padding(false)\n        }\n        if (inputType == TYPE_TEXT_VARIATION_PASSWORD || inputType == TYPE_NUMBER_VARIATION_PASSWORD) {\n            isPassword = true\n            this.maxLines = 1\n        } else if (inputType == EditorInfo.TYPE_CLASS_PHONE) {\n            this.keyListener = DigitsKeyListener.getInstance(\"0123456789\")\n        }\n        if (!isPassword && isClearIconVisible) {\n            handleClearButton()\n        }\n\n        if (mPrefix != null && mPrefix!!.length > 0) {\n            calculatePrefix()\n        }\n\n        if (isPassword)\n            if (!TextUtils.isEmpty(text)) {\n                showPasswordVisibilityIndicator(true)\n            } else {\n                showPasswordVisibilityIndicator(false)\n            }\n        setOnTouchListener(OnTouchListener { view, event ->\n            val editText = this@CustomEditText\n            if (editText.compoundDrawables[2] == null)\n                return@OnTouchListener false\n            if (event.action != MotionEvent.ACTION_UP)\n                return@OnTouchListener false\n            if (isPassword) {\n                val width = if (drawableEnd == null) 0 else drawableEnd!!.intrinsicWidth\n                if (event.x > editText.width - editText.paddingRight - width) {\n                    togglePasswordVisibility()\n                    event.action = MotionEvent.ACTION_CANCEL\n                }\n            } else if (isClearIconVisible) {\n                val width = if (imgCloseButton == null) 0 else imgCloseButton!!.intrinsicWidth\n                if (event.x > editText.width - editText.paddingRight - width) {\n                    editText.setText(\"\")\n                    this@CustomEditText.handleClearButton()\n                }\n            }\n            false\n        })\n        setFont()\n        a.recycle()\n    }\n\n    override fun onMeasure(widthMeasureSpec: Int,\n                           heightMeasureSpec: Int) {\n        super.onMeasure(widthMeasureSpec, heightMeasureSpec)\n        if (mPrefix != null)\n            calculatePrefix()\n    }\n\n\n    public  fun setCursorColor(@ColorInt color: Int) = try {\n        var c = color\n        if (c == 0) c = getThemeAccentColor()\n        // Get the cursor resource id\n        var field = TextView::class.java.getDeclaredField(\"mCursorDrawableRes\")\n        field.isAccessible = true\n        val drawableResId = field.getInt(this)\n\n        // Get the editor\n        field = TextView::class.java.getDeclaredField(\"mEditor\")\n        field.isAccessible = true\n        val editor = field.get(this)\n\n        // Get the drawable and set a color filter\n        val drawable = ContextCompat.getDrawable(this.context, drawableResId)\n        drawable?.setColorFilter(c, PorterDuff.Mode.SRC_IN)\n        val drawables = arrayOf<Drawable>(drawable!!, drawable)\n\n        // Set the drawables\n        field = editor.javaClass.getDeclaredField(\"mCursorDrawable\")\n        field.isAccessible = true\n        field.set(editor, drawables)\n    } catch (ignored: Exception) {\n    }\n\n/**\n     * This method is used to set the custom font\n     */\n    private fun setFont() {\n        if (font != null) {\n            try {\n                typeface = Typefaces[context, font!!]\n            } catch (ignored: Exception) {\n            }\n\n        }\n    }\n\n    /**\n     * This method is used to set the rectangle box on EditText\n     */\n    private fun setBackGroundOfLayout(shape: Drawable?) {\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {\n            background = shape\n        } else {\n            setBackgroundDrawable(shape)\n        }\n        padding(true)\n    }\n/**\n     * This method is used to set the padding\n     */\n    private fun padding(isRound: Boolean) {\n        val extraPadding: Int\n        val extraPad: Int\n        if (isRound) {\n            extraPadding = 5\n            extraPad = 0\n        } else {\n            extraPad = 5\n            extraPadding = 0\n        }\n        if (cPadding != -1) {\n            super.setPadding(cPadding + extraPadding, cPadding, cPadding, cPadding + extraPad)\n        } else {\n            super.setPadding(cPaddingLeft + extraPadding, cPaddingTop, cPaddingRight, cPaddingBottom + extraPad)\n        }\n    }\n\n\n    /**\n     * This method is used to draw the rectangle border view with color\n     */\n    @SuppressLint(\"WrongConstant\")\n    private fun getShapeBackground(@ColorInt color: Int): Drawable {\n\n        val shape = GradientDrawable()\n        shape.shape = GradientDrawable.RECTANGLE\n        shape.cornerRadius = mCornerRadius\n        shape.setColor(mBackgroundColor)\n        shape.setStroke(mStrokeWidth.toInt(), color)\n        return shape\n    }\n\n\n    @SuppressLint(\"DrawAllocation\")\n    override fun onDraw(canvas: Canvas) {\n        super.onDraw(canvas)\n        if (mPrefix != null) {\n            val prefix = mPrefix\n            var myPaint: Paint? = null\n            if (prefixTextColor != 0) {\n                myPaint = Paint(Paint.ANTI_ALIAS_FLAG or Paint.DITHER_FLAG)\n                myPaint.color = prefixTextColor\n                myPaint.textAlign = Paint.Align.LEFT\n                myPaint.textSize = textSize\n            }\n            canvas.drawText(prefix!!, mOriginalLeftPadding, getLineBounds(0, null).toFloat(), myPaint\n                    ?: paint)\n        }\n    }\n\n\n    @SuppressLint(\"NewApi\")\n    private fun handleClearButton() {\n        if (isClearIconVisible) {\n            DrawableCompat.setTint(imgCloseButton!!, clearIconTint)\n            imgCloseButton!!.setBounds(0, 0, 43, 43)\n            if (Objects.requireNonNull<Editable>(this.text).isEmpty()) {\n                this.setCompoundDrawables(this.compoundDrawables[0], this.compoundDrawables[1], null, this.compoundDrawables[3])\n            } else {\n                this.setCompoundDrawables(this.compoundDrawables[0], this.compoundDrawables[1], imgCloseButton, this.compoundDrawables[3])\n            }\n        }\n    }\n\n\n    public override fun onTextChanged(s: CharSequence, i: Int, i1: Int, i2: Int) {\n        try {\n            if (isPassword) {\n                if (s.isNotEmpty()) {\n                    showPasswordVisibilityIndicator(true)\n                } else {\n                    isShowingPassword = false\n                    maskPassword()\n                    showPasswordVisibilityIndicator(false)\n                }\n            } else if (isClearIconVisible)\n                this@CustomEditText.handleClearButton()\n\n        } catch (e: Exception) {\n            e.printStackTrace()\n        }\n\n    }\n\n    private fun showPasswordVisibilityIndicator(show: Boolean) {\n        if (show) {\n            val original = if (isShowingPassword)\n                ContextCompat.getDrawable(context, R.drawable.ic_visibility_on)\n            else\n                ContextCompat.getDrawable(context, R.drawable.ic_visibility_off)\n            if (original != null) {\n                original.mutate()\n                DrawableCompat.setTint(original, hideShowIconTint)\n                original.setBounds(0, 0, 43, 43)\n                drawableEnd = original\n                this.setCompoundDrawables(this.compoundDrawables[0], this.compoundDrawables[1], original, this.compoundDrawables[3])\n            }\n        } else {\n            this.setCompoundDrawables(this.compoundDrawables[0], this.compoundDrawables[1], null, this.compoundDrawables[3])\n        }\n    }\n\n    //make it visible\n    private fun unmaskPassword() {\n        transformationMethod = null\n    }\n\n    //hide it\n    private fun maskPassword() {\n        transformationMethod = PasswordTransformationMethod.getInstance()\n    }\n\n    private fun getThemeAccentColor(): Int {\n        val colorAttr: Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {\n            android.R.attr.colorAccent\n        } else {\n            context.resources.getIdentifier(\"colorAccent\", \"attr\", context.packageName)\n        }\n        val outValue = TypedValue()\n        context.theme.resolveAttribute(colorAttr, outValue, true)\n        return outValue.data\n    }\n\n    private fun togglePasswordVisibility() {\n        // Store the selection\n        val selectionStart = this.selectionStart\n        val selectionEnd = this.selectionEnd\n        // Set transformation method to show/hide password\n        if (isShowingPassword) {\n            maskPassword()\n        } else {\n            unmaskPassword()\n        }\n        // Restore selection\n        this.setSelection(selectionStart, selectionEnd)\n        // Toggle flag and show indicator\n        isShowingPassword = !isShowingPassword\n        showPasswordVisibilityIndicator(true)\n    }\n\n    public fun setFontName(fontName: String) {\n        this.font = fontName\n        setFont()\n    }\n\n\n    private fun calculatePrefix() {\n        if (mOriginalLeftPadding == -1f) {\n            val prefix = mPrefix\n            val widths = FloatArray(prefix!!.length)\n            paint.getTextWidths(prefix, widths)\n            var textWidth = 0f\n            for (w in widths) {\n                textWidth += w\n            }\n            mOriginalLeftPadding = compoundPaddingLeft.toFloat()\n            setPadding((textWidth + mOriginalLeftPadding).toInt(),\n                    paddingRight, paddingTop,\n                    paddingBottom)\n        }\n    }\n\n    public fun setPrefixTextColor(prefixTextColor: Int) {\n        this.prefixTextColor = prefixTextColor\n        invalidate()\n    }\n\n\n    companion object {\n\n        private const val TYPE_TEXT_VARIATION_PASSWORD = 129\n        private const val TYPE_NUMBER_VARIATION_PASSWORD = 18\n        private const val DEFAULT_PADDING = 15\n    }\n}\n"
  },
  {
    "path": "customedittext/src/main/java/com/libizo/Typefaces.kt",
    "content": "package com.libizo\n\nimport android.content.Context\nimport android.graphics.Typeface\n\nimport java.util.Hashtable\n\n/**\n * Created by ${Raja} on 30-Jun-17.\n */\nobject Typefaces {\n    private val cache = Hashtable<String, Typeface>()\n\n    operator fun get(c: Context, name: String): Typeface? {\n        synchronized(cache) {\n            if (!cache.containsKey(name)) {\n                val t = Typeface.createFromAsset(c.assets, name)\n                cache[name] = t\n            }\n            return cache[name]\n        }\n    }\n\n}"
  },
  {
    "path": "customedittext/src/main/res/values/attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <declare-styleable name=\"CustomEditText\">\n        <attr name=\"android:inputType\" />\n        <attr name=\"android:padding\" />\n        <attr name=\"android:paddingLeft\" />\n        <attr name=\"android:paddingRight\" />\n        <attr name=\"android:paddingTop\" />\n        <attr name=\"android:paddingBottom\" />\n        <attr name=\"libIZO_setBackgroundColor\" format=\"color\" />\n        <attr name=\"libIZO_setBorderColor\" format=\"color\" />\n        <attr name=\"libIZO_setBorderView\" format=\"boolean\" />\n        <attr name=\"libIZO_setFont\" format=\"string\" />\n        <attr name=\"libIZO_setStrokeWidth\" format=\"dimension\" />\n        <attr name=\"libIZO_setCornerRadius\" format=\"dimension\" />\n        <attr name=\"libIZO_setClearIconVisible\" format=\"boolean\" />\n        <attr name=\"libIZO_clearIconTint\" format=\"color\" />\n        <attr name=\"libIZO_setCursorColor\" format=\"color\" />\n        <attr name=\"libIZO_hideShowPasswordIconTint\" format=\"color\" />\n        <attr name=\"libIZO_setPrefix\" format=\"string\" />\n        <attr name=\"libIZO_setPrefixTextColor\" format=\"color\" />\n    </declare-styleable>\n\n</resources>"
  },
  {
    "path": "customedittext/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">CustomEditText</string>\n</resources>\n"
  },
  {
    "path": "customedittext/src/test/java/com/libizo/ExampleUnitTest.java",
    "content": "package com.libizo;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * Example local unit test, which will execute on the development machine (host).\n *\n * @see <a href=\"http://d.android.com/tools/testing\">Testing documentation</a>\n */\npublic class ExampleUnitTest {\n    @Test\n    public void addition_isCorrect() throws Exception {\n        assertEquals(4, 2 + 2);\n    }\n}"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "#Mon Mar 04 12:19:38 IST 2019\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-4.10.1-all.zip\n"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto init\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto init\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:init\n@rem Get command-line arguments, handling Windowz variants\n\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\n\n:win9xME_args\n@rem Slurp the command line arguments.\nset CMD_LINE_ARGS=\nset _SKIP=2\n\n:win9xME_args_slurp\nif \"x%~1\" == \"x\" goto execute\n\nset CMD_LINE_ARGS=%*\ngoto execute\n\n:4NT_args\n@rem Get arguments from the 4NT Shell from JP Software\nset CMD_LINE_ARGS=%$\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "settings.gradle",
    "content": "include ':app', ':customedittext'\n"
  }
]