当我在textview或imageview中使用VectorDrawable资源时,使用"android:DrawableRight"/"android:DrawableEnd"/"android:DrawableStart"/"android:DrawableLeft"时会出现运行时崩溃.
该应用程序将编译正常,没有任何警告.
我在用
我发现的是,我可以通过编程方式在Java中分配SVG,而不会像这样崩溃.
TextView tv = (TextView) findViewById(R.id.textView);
tv.setCompoundDrawablesWithIntrinsicBounds(null,null, getResources().getDrawable(R.drawable.ic_accessible_white_36px),null);
Run Code Online (Sandbox Code Playgroud)
(我怀疑这是23.2的支持库错误.)
但是可以将drawableRight等用于SVG资产吗?
这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="au.com.angryitguy.testsvg.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableRight="@drawable/ic_accessible_white_36px"
android:background="@color/colorPrimary"
android:textColor="#FFFFFF"
android:textSize="22sp"
android:text="Hello World!"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的活动
package au.com.angryitguy.testsvg;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是Google材料设计网站中未经修改的VectorDrawable资产.
<vector android:height="24dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:pathData="M12,4m-2,0a2,2 …Run Code Online (Sandbox Code Playgroud) java android android-layout compound-drawables android-vectordrawable
我注意到Android现在支持某种矢量绘图,通过一个名为" VectorDrawable " 的类(以及AnimatedVectorDrawable,BTW).我通过查看Android-Studio上的新功能找到了它.
我不知道这是否会是具有把多个文件分成多个文件夹(年底mdpi,hdpi,xhdpi,等).这将是伟大的,并可能在某些情况下最小化应用程序大小.
我想就这个新课提出几个问题:
是否可以在较旧的Android版本中使用它,也许可以通过甚至是Google支持库的库?
我不熟悉它是如何工作的,但Lollipop可以处理SVG文件吗?它可以做任何可以在SVG文件上实现的东西吗?
除了我发现的文档之外,是否有使用它的示例/教程/视频?
我正在开发一个Android项目,我选择<vector>显示图标,因为它具有适应性和动态性,但是,我只能在运行Android的设备上运行此应用程序,该设备具有API 21或更高版本.我的问题是如何<vector>在较低的Android版本即API 14或类型上使用.谢谢!
<!-- drawable/ic_android_debug_bridge.xmlxml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="48dp"
android:width="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="@color/primaryColorDark"
android:pathData="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 `0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></vector>`
Run Code Online (Sandbox Code Playgroud) 我从这里下载了一些材料图标:
我很困惑如何将这些图标的颜色更改为drawables.我有一个Button图标在drawableLeft属性中,然后一些ImageButton图标设置,如下所示:
<Button
android:text="Hey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_arrow_upward_black_24dp"
android:stateListAnimator="@null" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_arrow_downward_black_24dp"
android:background="@null" />
Run Code Online (Sandbox Code Playgroud)
如何更改每个图标的颜色?
此外,如果我下载的图标是黑色,我如何将图标的颜色更改为透明的颜色?
忍受我,我是新人!
我想在我的Android应用程序中使用向量,我希望我的应用程序向后兼容.我发现这个支持库看起来很酷!*
所以我很困惑我将如何"安装"它.它为您提供了下载.pom,.aar,javadoc.jar和sources.jar文件的链接.我应该下载哪一个,以及我应该把文件放在哪里(什么文件夹)?
(我正在使用Android Studio!)
*(有人知道一个不同的VectorDrawable支持库吗?我有兴趣听听每个人的经历!)
我的应用程序在API <v21下,因此我使用Android支持库23.2来管理我的vectorDrawables.
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Run Code Online (Sandbox Code Playgroud)
所有视图都可以正常执行推送通知的图标:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setColor(getResources().getColor(R.color.colorAccent))
.setSmallIcon(R.drawable.ic_play_arrow_white_24dp) //ERROR
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.playing));
Run Code Online (Sandbox Code Playgroud)
我有错误:
E/AndroidRuntime: FATAL EXCEPTION: main
android.app.RemoteServiceException: Bad notification posted from package com.ashomok.lullabies: Couldn't create icon: StatusBarIcon(pkg=com.ashomok.lullabiesuser=0 id=0x7f020053 level=0 visible=true num=0 )
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1401)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何使用vectorDrawable?有可能吗?