我正在使用设计支持库23.2。 我已经在build.gradle中添加了这些行,因为我的Gradle Plugin是版本1.5
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:srcCompat="@drawable/wallpaper"/>
在here
中指定但我不能将srcCompat属性用于我的imageview。
<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="#FF000000"
android:pathData="M4,4h7V2H4c-1.1,0 -2,0.9 -2,2v7h2V4zm6,9l-4,5h12l-3,-4 -2.03,2.71L10,13zm7,-4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S14,7.67 14,8.5s0.67,1.5 1.5,1.5S17,9.33 17,8.5zM20,2h-7v2h7v7h2V4c0,-1.1 -0.9,-2 -2,-2zm0,18h-7v2h7c1.1,0 2,-0.9 2,-2v-7h-2v7zM4,13H2v7c0,1.1 0.9,2 2,2h7v-2H4v-7z"/>
其中@ drawable / wallpaper是矢量资源文件
{{1}}
它说
错误:(14)找不到属性&#39; srcCompat&#39;的资源标识符。在 包&#39; android&#39;
我的Gradle版本是1.5。我怎样才能使用srcCompat?
答案 0 :(得分:106)
不要
android:srcCompat="@drawable/wallpaper"
<强>不要强>
app:srcCompat="@drawable/wallpaper"
因为 srcCompat 属性实际上是在 AppCompat 库中定义的。
重要您需要为此添加适当的命名空间。
的xmlns:应用= “http://schemas.android.com/apk/res-auto”
重要强>
你得到的东西似乎只是一个lint错误 忽略。我尝试过并遇到同样的错误,但它确实有效 正确。
您可以使用tools:ignore="MissingPrefix"
来避免暂时看到此错误。
答案 1 :(得分:28)
将许多答案合并为一个答案:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
android:background="@color/primary">
<android.support.v7.widget.AppCompatImageView
android:layout_width="300dp"
android:layout_height="100dp"
android:id="@+id/logoImageView"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:srcCompat="@drawable/my_logo_vector"
android:tint="@color/white"
/>
</RelativeLayout>
这对我有用。没有lint错误。使用AppCompatImageView
。
答案 2 :(得分:10)
首先(在build.gradle中)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
第二
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_traffic_black_24dp"
tools:ignore="MissingPrefix" />
第三
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
我们走了。
答案 3 :(得分:3)
致电app:srcCompat
而非android:srcCompat
。
不要
android:srcCompat="@drawable/your_image"
<强> DO 强>
app:srcCompat="@drawable/your_image"
<强>最后强>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/wallpaper"/>
升级 Gradle版本。
<强>解决方案强>
Gradle Plugin 2.0+
com.android.tools.build:gradle:2.0.0-beta2
Vector drawables允许您用a替换多个png资源 单个矢量图形,以XML格式定义。虽然以前仅限于 棒棒糖和更高的设备,VectorDrawable和 AnimatedVectorDrawable现在可通过两个新的支持获得 图书馆支持矢量绘图和 支持动画向量抽拉。
添加此
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
您会注意到此新属性仅存在于Gradle插件的2.0版本中。如果您使用的是Gradle 1.5,则可以使用
// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
答案 4 :(得分:2)
我刚改变了:
app:srcCompat="@drawable/wallpaper"
到
android:src="@drawable/wallpaper"
这对我有用。
答案 5 :(得分:2)
您需要关心的很多事情 首先使用:
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
或
vectorDrawables {
useSupportLibrary = true
}
然后使用
<android.support.v7.widget.AppCompatImageView
android:id="@+id/changeLanguages"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:background="@color/transparent"
android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_transfer" />
始终使用AppCompatImageView或Button,因为Simple ImageView不支持矢量图像
如果上述所有方法均无效,请使用
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
如果您使用的是Activity,请使用AppCompatActivty扩展您的Activity
public final class MainActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
答案 6 :(得分:1)
您正在使用android:srcCompat
。它应该由app:srcCompat
代替,因为它是在AppCompat中定义的属性,而不是在android:
命名空间内。
答案 7 :(得分:1)
我知道来晚了,但可能会帮助别人。即使使用 app:SrcCompat ,我也遇到了同样的问题。花了很多时间后,我才发现这是由于可绘制对象引起的。通过将所有可绘制对象从drawable(v21)移至简单可绘制对象,可以简单地解决我的问题。
答案 8 :(得分:0)
将您的gradle插件更新为2.0 +
// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
根据谷歌开发者的博客指南
http://android-developers.blogspot.in/2016/02/android-support-library-232.html
答案 9 :(得分:0)
此库现在是v7 AppCompat library
的依赖项,允许开发人员和AppCompat轻松使用矢量drawable。
要在ImageButton或ImageView中使用VectorDrawableCompat,使用app:srcCompat XML属性或setImageResource()方法。
要在API级别20或更低级别上引用属性ID,请将以下appt标志添加到构建gradle文件中:
如果您使用Android插件构建 Gradle 1.5.0或更低版本,请将以下内容添加到build.gradle文件中:
android {
defaultConfig {
// Stops the Gradle’s automatic rasterization of vectors
generatedDensities = []
}
// Flag that tells aapt to keep the attribute ids
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
如果您使用Android插件构建 Gradle 2.0.0或更高版本,请将以下内容添加到build.gradle文件中:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
答案 10 :(得分:0)
你需要添加
的xmlns:应用= “http://schemas.android.com/apk/res-auto”
到你的布局工作。我的“app:srcCompat”以红色突出显示,直到我添加它。
答案 11 :(得分:0)
确保要使用的图片为PNG格式。
复制图片。
转到Android层次结构中1.Project TAB上的mipmap。
然后单击一次mipmap(在Windows Ctrl + v上),为照片命名时,请确保其小写字母且没有符号。
照片应该可用。
设置图像视图,(您可能必须暂时使用填充色)。
单击imageView,然后单击srcCompact(不带画笔的类型,然后在@ mipmap /“您的图片名称”上键入文字(此步骤位于属性标签中)
应该可以!
如果您需要内容描述,我只是使用@ String / StringPicture