相关疑难解决方法(0)

是否可以使用android:DrawableRight在Buttons和TextViews中使用VectorDrawable?

当我在textview或imageview中使用VectorDrawable资源时,使用"android:DrawableRight"/"android:DrawableEnd"/"android:DrawableStart"/"android:DrawableLeft"时会出现运行时崩溃.

该应用程序将编译正常,没有任何警告.

我在用

  • Gradle 1.5
  • 支持库23.2('com.android.support:appcompat-v7:23.2.0')

我发现的是,我可以通过编程方式在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

117
推荐指数
10
解决办法
5万
查看次数

VectorDrawable - 它是否适用于Lollipop之前版本的Android?

背景

我注意到Android现在支持某种矢量绘图,通过一个名为" VectorDrawable " 的类(以及AnimatedVectorDrawable,BTW).我通过查看Android-Studio上的新功能找到了它.

我不知道这是否会是具有把多个文件分成多个文件夹(年底mdpi,hdpi,xhdpi,等).这将是伟大的,并可能在某些情况下最小化应用程序大小.

问题

我想就这个新课提出几个问题:

  1. 是否可以在较旧的Android版本中使用它,也许可以通过甚至是Google支持库的库?

  2. 我不熟悉它是如何工作的,但Lollipop可以处理SVG文件吗?它可以做任何可以在SVG文件上实现的东西吗?

  3. 除了我发现的文档之外,是否有使用它的示例/教程/视频?

android vector gradle android-vectordrawable

84
推荐指数
5
解决办法
5万
查看次数

如何在Android API中使用矢量drawables 21?

我正在开发一个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)

java android vector android-layout

63
推荐指数
7
解决办法
6万
查看次数

改变材料图标的颜色?

我从这里下载了一些材料图标:

https://material.io/icons/

我很困惑如何将这些图标的颜色更改为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 android-layout android-studio

12
推荐指数
2
解决办法
9516
查看次数

VectorDrawable向后兼容性和安装非官方支持库

忍受我,我是新人!
我想在我的Android应用程序中使用向量,我希望我的应用程序向后兼容.我发现这个支持库看起来很酷!*
所以我很困惑我将如何"安装"它.它为您提供了下载.pom,.aar,javadoc.jar和sources.jar文件的链接.我应该下载哪一个,以及我应该把文件放在哪里(什么文件夹)?
(我正在使用Android Studio!)
*(有人知道一个不同的VectorDrawable支持库吗?我有兴趣听听每个人的经历!)

android android-support-library

5
推荐指数
1
解决办法
4698
查看次数

如何使用Android支持库23.2将vectorDrawable用作推送通知的图标?setSmallIcon给出错误

我的应用程序在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?有可能吗?

android android-appcompat android-vectordrawable

4
推荐指数
1
解决办法
1514
查看次数