Android TextView with rich support of compound drawables

Overview

TextViewRichDrawable Android Arsenal

This is a tiny library which empowers TextView's (and its inheritors) compound drawables with size specifying, vector support and tinting. Currently empowers next Android views with RichDrawable support:

  • Button -> ButtonRichDrawable
  • CheckBox -> CheckBoxRichDrawable
  • EditText -> EditTextRichDrawable
  • RadioButton -> RadioButtonRichDrawable
  • TextView -> TextViewRichDrawable

This library is just an extension of Android's TextView.

Usage

  • Enable vector Drawable support for pre Lollipop devices (more details):
 android {
   defaultConfig {
     vectorDrawables.useSupportLibrary = true
    }
 }
  • In XML layout:
    <com.tolstykh.textviewrichdrawable.TextViewRichDrawable
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        app:compoundDrawableHeight="24dp"
        app:compoundDrawableWidth="24dp"
        app:drawableTopVector="@drawable/some_vector_drawble"
        app:drawableEndVector="@drawable/another_vector_drawable"
        app:drawableTint="@color/colorAccent" />
  • All customizable attributes:
    <declare-styleable name="TextViewRichDrawable">
        <attr name="compoundDrawableWidth" format="dimension"/>
        <attr name="compoundDrawableHeight" format="dimension"/>
        <attr name="drawableStartVector" format="reference" />
        <attr name="drawableTopVector" format="reference" />
        <attr name="drawableEndVector" format="reference" />
        <attr name="drawableBottomVector" format="reference" />
        <attr name="drawableTint" format="reference" />
    </declare-styleable>

Example

TextView-rich-drawable

Download

repositories {
    jcenter()
}
compile 'com.tolstykh.textviewrichdrawable:textview-rich-drawable:0.3.2'

License

Copyright 2016 Oleksandr Tolstykh

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Version 0.2.1 causes application to crash for Android 4

    Version 0.2.1 causes application to crash for Android 4

    Updating to version 0.2.1 is causing application to crash in Android 4 (non vectorial support) when trying to inject the XML with TextViewRichDrawable component.

    Example layout file:

    Layout file, layout/view_tag.xml

    <?xml version="1.0" encoding="utf-8"?>
    <com.tolstykh.textviewrichdrawable.TextViewRichDrawable
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:drawableEndVector="@drawable/ic_cross"
        app:compoundDrawableHeight="10dp"
        android:drawablePadding="5dp"/>
    

    Used vector icon, drawable/ic_cross.xml

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
            android:width="24dp"
            android:height="24dp"
            android:viewportWidth="24.0"
            android:viewportHeight="24.0">
        <path
            android:fillColor="#FFF"
            android:pathData="M22.245,4.015c0.313,0.313 0.313,0.826 0,1.139l-6.276,6.27c-0.313,0.312 -0.313,0.826 0,1.14l6.273,6.272c0.313,0.313 0.313,0.826 0,1.14l-2.285,2.277c-0.314,0.312 -0.828,0.312 -1.142,0l-6.271,-6.271c-0.313,-0.313 -0.828,-0.313 -1.141,0l-6.276,6.267c-0.313,0.313 -0.828,0.313 -1.141,0l-2.282,-2.28c-0.313,-0.313 -0.313,-0.826 0,-1.14l6.278,-6.269c0.313,-0.312 0.313,-0.826 0,-1.14L1.709,5.147c-0.314,-0.313 -0.314,-0.827 0,-1.14l2.284,-2.278C4.308,1.417 4.821,1.417 5.135,1.73L11.405,8c0.314,0.314 0.828,0.314 1.141,0.001l6.276,-6.267c0.312,-0.312 0.826,-0.312 1.141,0L22.245,4.015z"/>
    </vector>
    

    When trying to inflate the class, it causes application to crash since for Android 4 vector drawables are converted to PNG at compile time:

    android.view.InflateException: Binary XML file line #2: Error inflating class com.tolstykh.textviewrichdrawable.TextViewRichDrawable
    	at android.view.LayoutInflater.createView(LayoutInflater.java:620)
    	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    	at android.view.View.inflate(View.java:17949)
    	at com.myapp.views.TagView.<init>(TagView.java:25)
    Caused by: java.lang.reflect.InvocationTargetException
    	at java.lang.reflect.Constructor.constructNative(Native Method)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    	at android.view.LayoutInflater.createView(LayoutInflater.java:594)
    	... 83 more
    Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi-v4/ic_cross.png from xml type xml resource ID #0x7f0200b1
    	at android.content.res.Resources.loadXmlResourceParser(Resources.java:2412)
    	at android.content.res.Resources.loadXmlResourceParser(Resources.java:2367)
    	at android.content.res.Resources.getXml(Resources.java:998)
    	at android.support.v7.widget.ResourcesWrapper.getXml(ResourcesWrapper.java:183)
    	at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:586)
    	at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.getVectorDrawable(TextViewRichDrawable.java:160)
    	at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.initCompoundDrawables(TextViewRichDrawable.java:85)
    	at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.init(TextViewRichDrawable.java:68)
    	at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.<init>(TextViewRichDrawable.java:39)
    	... 86 more
    Caused by: java.io.FileNotFoundException: Corrupt XML binary file
    	at android.content.res.AssetManager.openXmlAssetNative(Native Method)
    	at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:501)
    	at android.content.res.Resources.loadXmlResourceParser(Resources.java:2394)
    	... 94 more
    
    opened by alex-gutierrez 2
  • Unnecessary manifest attributes

    Unnecessary manifest attributes

    Please remove the attributes: android:allowBackup="false" android:supportsRtl="false"

    As they create annoying manifest merge problems and they are not even necessary for this library purposes. Thanks!

    opened by kaizie 1
  • Fix compound drawable visibility + drawable tinting.

    Fix compound drawable visibility + drawable tinting.

    Fixed compound drawable visibility if its size hasn't been set explicitly. Fixed top and bottom compound drawables. Added support for setting a compound drawable tint.

    opened by makovkastar 0
  • DrawbaleTint is not working

    DrawbaleTint is not working

    Trying to change the drawable color in TextViewRichDrawble with app:drawableTint="@android:color/holo_red_dark" but that has no effect on the output.

    opened by mecoFarid 0
  • Error in API 19 Kitkat devices

    Error in API 19 Kitkat devices

    **Getting crash in Api 19 kitkat devices. The app crashes when used .png images, with vector images works well.

    Here is crash logs:

    `

     Caused by: android.view.InflateException: Binary XML file line #79: Error inflating class com.tolstykh.textviewrichdrawable.TextViewRichDrawable
        at android.view.LayoutInflater.createView(LayoutInflater.java:621)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
        at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
        at com.example.msi.winstantapp.fragments.MainFragment.onCreateView(MainFragment.java:62)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
        at android.support.v4.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2617)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2388)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2344)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
        at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)
        at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
        at android.app.Activity.performStart(Activity.java:5241)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5017) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
        at dalvik.system.NativeStart.main(Native Method) 
    

    ` Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:595) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)  at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)  at com.example.msi.winstantapp.fragments.MainFragment.onCreateView(MainFragment.java:62)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)  at android.support.v4.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2617)  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2388)  at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2344)  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)  at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)  at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)  at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)  at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)  at android.app.Activity.performStart(Activity.java:5241)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5017)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  at dalvik.system.NativeStart.main(Native Method) 

    Caused by: android.content.res.Resources$NotFoundException: File res/drawable/flag_usd.png from xml type xml resource ID #0x7f08014e at android.content.res.Resources.loadXmlResourceParser(Resources.java:2361) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2316) at android.content.res.Resources.getXml(Resources.java:988) at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:562) at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.getVectorDrawable(RichDrawableHelper.java:157) at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.inflateVectors(RichDrawableHelper.java:82)

    opened by jamacco94 1
  • Corrupt XML binary file

    Corrupt XML binary file

    This crash only happens on a physical Note 4, it works fine in emulator for some reason.

    My min api is 23 so vectorDrawables.useSupportLibrary did not fix this.

    The view:

    <com.tolstykh.textviewrichdrawable.TextViewRichDrawable
                    android:id="@+id/tv_gold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="test"
                    app:compoundDrawableHeight="14dp"
                    app:compoundDrawableWidth="14dp"
                    app:drawableEndVector="@drawable/ic_star" />
    

    This is the error:

    Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class com.tolstykh.textviewrichdrawable.TextViewRichDrawable
            at android.view.LayoutInflater.createView(LayoutInflater.java:657)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:855)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
            at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
            at com.github.mpivchev.app.activities.Main2Activity.onCreate(Main2Activity.java:13) 
            at android.app.Activity.performCreate(Activity.java:6876) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
            at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:158) 
            at android.app.ActivityThread.main(ActivityThread.java:7225) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at android.view.LayoutInflater.createView(LayoutInflater.java:631)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
            at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
            at com.github.mpivchev.app.activities.Main2Activity.onCreate(Main2Activity.java:13) 
            at android.app.Activity.performCreate(Activity.java:6876) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
            at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:158) 
            at android.app.ActivityThread.main(ActivityThread.java:7225) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
         Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/ic_star.png from xml type xml resource ID #0x7f080075
            at android.content.res.Resources.loadXmlResourceParser(Resources.java:4419)
            at android.content.res.Resources.loadXmlResourceParser(Resources.java:4366)
            at android.content.res.Resources.getXml(Resources.java:2421)
            at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:562)
            at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.getVectorDrawable(RichDrawableHelper.java:157)
            at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.inflateVectors(RichDrawableHelper.java:88)
            at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.initCompoundDrawables(RichDrawableHelper.java:68)
            at com.tolstykh.textviewrichdrawable.helper.RichDrawableHelper.apply(RichDrawableHelper.java:59)
            at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.init(TextViewRichDrawable.java:31)
            at com.tolstykh.textviewrichdrawable.TextViewRichDrawable.<init>(TextViewRichDrawable.java:21)
            at java.lang.reflect.Constructor.newInstance(Native Method) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:631) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
            at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
            at com.github.mpivchev.app.activities.Main2Activity.onCreate(Main2Activity.java:13) 
            at android.app.Activity.performCreate(Activity.java:6876) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
            at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:158) 
            at android.app.ActivityThread.main(ActivityThread.java:7225) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
         Caused by: java.io.FileNotFoundException: Corrupt XML binary file
    
    opened by mpivchev 1
  • Does not work on API 16

    Does not work on API 16

    It doesnt work on API 16 - samsung s3 mini

        <com.tolstykh.textviewrichdrawable.TextViewRichDrawable
            android:id="@+id/levelTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/icon_badge"
            android:drawablePadding="8dp"
            android:drawableStart="@drawable/icon_badge"
            android:gravity="center"
            android:textSize="14sp"
            app:compoundDrawableHeight="24dp"
            app:compoundDrawableWidth="24dp" />
    
    opened by mac229 0
Owner
Oleksandr Tolstykh
Passionate Android developer. Google lover. Travel addicted.
Oleksandr Tolstykh
A simple watchdog that detects Android ANR (Application Not Responding) error and throws a meaningful exception

ANR-WatchDog A simple watchdog that detects Android ANRs (Application Not Responding). Table of contents ANR-WatchDog Table of contents Why it exists

Salomon BRYS 2.6k Jan 9, 2023
An app performance monitor(APM) , like "Android Studio profiler", you can easily monitor the performance of your app real time in browser

AndroidGodEye English README.md 中文 README_zh.md Android developer lack of monitoring of performance data,especially in production environment. so we n

AndroidKy 2.5k Dec 29, 2022
A simple and flexible Checked TextView or Checkable TextView

CheckableTextView Checkable TextView [KOTLIN] ⚡ A simple and flexible Checked TextView or Checkable TextView written in Kotlin ⚡ What's New Animation

null 110 Nov 20, 2022
Mentions-TextView - Make Mentions and hashtags clickable in Textview

Mentions Textview Custome Textview with Mentions and hashtags being clickable. D

null 2 Jan 9, 2022
How to improve the user experience using animated icons with vector drawables on Android

Android Animated Icons How to improve the user experience using animated icons with vector drawables on Android English version https://medium.com/@an

André Mion 116 Nov 25, 2022
🛠️ The missing drawable toolbox for Android. Create drawables programmatically and get rid of the boring and always repeated drawable.xml files.

DrawableToolbox English | 中文 The missing DrawableToolbox for Android. Create drawables programmatically and get rid of the boring and always repeated

Hong Duan 1.1k Jan 4, 2023
DSL for constructing the drawables in Kotlin instead of in XML

Android Drawable Kotlin DSL DSL for constructing the drawables in Kotlin instead of in XML Examples Shape drawables <?xml version="1.0" encoding="utf-

Infotech Group 178 Dec 4, 2022
🍭🚀💗 Tutorials about animations with Animators, Animated Vector Drawables, Shared Transitions, and more

?????? Tutorials about animations with Animators, Animated Vector Drawables, Shared Transitions, and more

Smart Tool Factory 696 Dec 28, 2022
Backarrow-animation-example - Animate back arrow to close button in Compose using animated drawables

Animate Back Arrow to Close Icon in Compose This is a simple demo for animated v

Jose Mateo 3 Feb 17, 2022
A simple gradle plugin that lets you create a download asset from zeplin and convert them to vector drawables automatically

A simple gradle plugin that lets you create a download asset from zeplin and convert them to vector drawables automatically elephant project using 100% Kotlin and be up and running in a few seconds.

Qifan Yang 21 Sep 21, 2022
ANDROID. ChipsLayoutManager (SpanLayoutManager, FlowLayoutManager). A custom layout manager for RecyclerView which mimicric TextView span behaviour, flow layouts behaviour with support of amazing recyclerView features

ChipsLayoutManager This is ChipsLayoutManager - custom Recycler View's LayoutManager which moves item to the next line when no space left on the curre

Oleg Beloy 3.2k Dec 25, 2022
RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android.

RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android. Looking for iOS? Check out cjwirth/RichEditorView Supported Functions Bold

Daichi Furiya 6k Jan 2, 2023
Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the brand new Roboto Slab fonts.

Android-RobotoTextView Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the bran

Evgeny Shishkin 782 Nov 12, 2022
💪 Rich Android Path. 🤡 Draw as you want. 🎉 Animate much as you can.

?? Rich Android Path. ?? Draw as you want. ?? Animate much as you can. Download sample app: Features Full Animation Control on Paths and VectorDrawabl

Ahmed Tarek 2.3k Dec 20, 2022
📱 Android Library to implement Rich, Beautiful, Stylish 😍 Material Navigation View for your project with Material Design Guidelines. Easy to use.

Material NavigationView for Android ?? ?? Android Library to implement Rich, Beautiful Material Navigation View for your project with Material Design

Shreyas Patil 198 Dec 17, 2022
Material Design ready and feature rich Twitter/Mastodon/Fanfou app for Android 4.1+.

Twidere for Android Material Design ready and feature rich Twitter/Mastodon/Fanfou app for Android 4.1+. Enjoy Fediverse now! Twidere-Android is maint

Twidere Project 2.7k Jan 1, 2023
Experimental Discord Mobile Rich Presence (Android)

MRPC Experimental Discord Mobile Rich Presence (Android) How does it work? It's pretty simple. Connect to the Discord Gateway as a normal Discord Clie

Duy Tran Khanh 41 Dec 25, 2022
GitPoint is one of the most feature-rich unofficial GitHub clients that is 100% free.

View repository and user information, control your notifications and even manage your issues and pull requests. Built with React Native, GitPoint is one of the most feature-rich unofficial GitHub clients that is 100% free.

GitPoint 4.6k Dec 28, 2022