Skip to content

Instantly share code, notes, and snippets.

@lisawray
Last active March 26, 2023 11:57
Show Gist options
  • Save lisawray/78c33f76809d2bcbbec9983e2c141a70 to your computer and use it in GitHub Desktop.
Save lisawray/78c33f76809d2bcbbec9983e2c141a70 to your computer and use it in GitHub Desktop.

Revisions

  1. Lisa Wray revised this gist Apr 8, 2016. 2 changed files with 25 additions and 3 deletions.
    13 changes: 12 additions & 1 deletion MainActivity.java
    Original file line number Diff line number Diff line change
    @@ -16,12 +16,23 @@ protected void onCreate(Bundle savedInstanceState) {
    DataBindingUtil.setContentView(this, R.layout.activity_main);
    }

    /**
    * Unlike the support library app:srcCompat, this will ONLY work with vectors.
    * @param imageView
    * @param resourceId
    */
    @BindingAdapter("android:src")
    public static void setImage(ImageView imageView, int resourceId) {
    Drawable drawable = VectorDrawableCompat.create(imageView.getResources(), resourceId, imageView.getContext().getTheme());
    imageView.setImageDrawable(drawable);
    }

    /**
    * Unlike the support library app:srcCompat, this will ONLY work with vectors.
    * @param textView
    * @param resourceId
    */
    @BindingAdapter("app:drawableLeftCompat")
    @BindingAdapter("android:drawableLeft")
    public static void setDrawableLeft(TextView textView, int resourceId) {
    Drawable drawable = VectorDrawableCompat.create(textView.getResources(), resourceId, textView.getContext().getTheme());
    Drawable[] drawables = textView.getCompoundDrawables();
    15 changes: 13 additions & 2 deletions activity_main.xml
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,9 @@
    <import type="com.xwray.vectorbinding.R"/>
    </data>

    <FrameLayout
    <LinearLayout
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.xwray.vectorbinding.MainActivity">
    @@ -17,8 +19,17 @@
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:drawableLeft="@drawable/ic_star"
    app:drawableLeftCompat="@{R.drawable.ic_star}"
    android:drawableLeft="@{R.drawable.ic_star}"
    android:text="Hello World!"/>

    <ImageView
    android:src="@{R.drawable.ic_star}"
    tools:src="@drawable/ic_star"
    android:tint="@color/colorAccent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

    </LinearLayout>

    </FrameLayout>
    </layout>
  2. Lisa Wray created this gist Apr 8, 2016.
    31 changes: 31 additions & 0 deletions MainActivity.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    package com.xwray.vectorbinding;

    import android.databinding.BindingAdapter;
    import android.databinding.DataBindingUtil;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.support.graphics.drawable.VectorDrawableCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DataBindingUtil.setContentView(this, R.layout.activity_main);
    }

    /**
    * Unlike the support library app:srcCompat, this will ONLY work with vectors.
    * @param textView
    * @param resourceId
    */
    @BindingAdapter("app:drawableLeftCompat")
    public static void setDrawableLeft(TextView textView, int resourceId) {
    Drawable drawable = VectorDrawableCompat.create(textView.getResources(), resourceId, textView.getContext().getTheme());
    Drawable[] drawables = textView.getCompoundDrawables();
    textView.setCompoundDrawablesWithIntrinsicBounds(drawable,
    drawables[1], drawables[2], drawables[3]);
    }
    }
    24 changes: 24 additions & 0 deletions activity_main.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    <?xml version="1.0" encoding="utf-8"?>
    <layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
    <import type="com.xwray.vectorbinding.R"/>
    </data>

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.xwray.vectorbinding.MainActivity">

    <TextView
    android:gravity="center_vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:drawableLeft="@drawable/ic_star"
    app:drawableLeftCompat="@{R.drawable.ic_star}"
    android:text="Hello World!"/>

    </FrameLayout>
    </layout>
    28 changes: 28 additions & 0 deletions build.gradle
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    apply plugin: 'com.android.application'

    android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
    applicationId "com.xwray.vectorbinding"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    dataBinding {
    enabled = true
    }
    }

    dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    }