可绘制的api <21
是否有可能为api <21做可绘制的着色工作?
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_calendar" android:tint="@color/primary" />
工作得很好,但只适用于API21的设备。 任何解决方法,降低api设备或AppCompat的支持? 找不到任何东西。
像这样使用AppCompatImageView
:
<android.support.v7.widget.AppCompatImageView android:id="@+id/my_appcompat_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_image" android:tint="#636363" />
确保您的应用程序的build.gradle
包含最新的appcompat-v7
。
例如:在应用程序的build.gradle
compile 'com.android.support:appcompat-v7:25.0.0'
。
你可以使用源代码来实现。 以前的着色不被DrawableCompat
支持。 从支持库22.1开始,你可以做到这一点,但是你需要这样做:
Drawable normalDrawable = getResources().getDrawable(R.drawable.drawable_to_tint); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.colorPrimaryLight));
你不能简单地使用ImageView来显示你的Drawable吗? android:tint
在较旧的API级别上工作正常。
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_calendar" android:tint="@color/primary" />
在此之前,有一个类似的问题: https : //stackoverflow.com/a/26533340/950427
Android可绘制着色仅在Android 5.0及更高版本(API 21+)中受支持。 (它确实表示“ At the moment this is limited to coloring the action bar and some widgets.
”)。
主题化
…
当您设置这些属性时,AppCompat会自动将其值传播到API 21+上的框架属性。 这会自动为状态栏和“概览(最近)”任务条目着色。
在较老的平台上,AppCompat在可能的情况下模拟颜色主题。 目前这仅限于着色动作栏和一些小部件。
和
小工具着色
在Android 5.0设备上运行时,所有的小部件都使用我们刚才讨论的颜色主题属性进行着色。 在棒棒糖上有两个主要特征:可绘制着色,以及可绘制的引用主题属性(forms为?attr / foo)。
AppCompat在早期版本的Android上为UI部件的子集提供了类似的行为:
一切由AppCompat的工具栏(动作模式等)提供EditText微调CheckBox RadioButton开关(使用新的android.support.v7.widget.SwitchCompat)CheckedTextView你不需要做任何特殊的事情,使这些工作,只需使用这些控制像往常一样,你的布局和AppCompat将做其余的(有一些注意事项,请参阅下面的常见问题)。
资料来源:
http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
现在AppCompatImageView,AppCompatButton将取代ImageView,Button来支持API较低的设备上的色调。 查看链接了解更多详情AppCompatImageView , AppCompatButton
对于着色图像,你可以使用imageView.setColorFilter(int color)
。 这从API 8工作,并为我的黑色图像着色我想要的颜色。 这可以取代setImageTintList()
但只是使用android:tint
也应该工作。
- managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
- 如何在android studio中更新gradle
- ScrollView .scrollTo无法正常工作? 保存ScrollView的位置在旋转
- 如何在Genymotion虚拟设备上安装Google框架(Play,Accounts等)?
- Android Studio多Windows一个项目
- 无法解决:com.android.support:appcompat-v7:26.0.0
- 如何在android中dynamic绘制图像?
- Logcat的大小限制是多less,如何改变它的容量?
- 如何杀死Android中当前正在运行的任务