我最初用minsdkversion
21
(Lollipop)写了这个SSCCE,它运行良好。 但我需要在前棒棒糖中使用VectorDrawableCompat
。在SSCCE中,XML布局中有一个ImageView
,其中图像的来源是res/drawable/
目录中定义的矢量图形。
最初,当清单中minsdkversion
设置为21
时,我使用android:src="@drawable/vector_circle"
将矢量图形设置为ImageView
中图像的来源。这很好。
然后我将清单文件中的minsdkversion
更改为11
。我还在XML布局中将ImageView
的{{1}}属性更改为android:src="@drawable/vector_circle"
。 但我正在
app:srcCompat="@drawable/vector_circle"
Unexpected namespace prefix "app" found for tag ImageView
行上的。我该如何解决这个问题?
SSCCE:
RES /抽拉/ vector_circle.xml:
app:srcCompat="@drawable/vector_circle"
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="465dp"
android:height="420dp"
android:viewportHeight="600"
android:viewportWidth="600" >
<group>
<path android:strokeColor="#2196F3"
android:strokeWidth="2"
android:pathData="M150,10 L75,200 L225,200 Z" />
</group>
</vector>
MainActivity.java:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/vector_circle" /><!-- app:srcCompat="@drawable/vector_circle" -->
</FrameLayout>
编辑:
我将public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
的{{1}}元素更改为
res/layout/activity_main.xml
我还在ImageView
目录中添加了<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/vector_circle"
tools:ignore="MissingPrefix" />
:
layout-v21/activity_main.xml
并将res/
添加到<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vector_circle" /><!-- app:srcCompat="@drawable/vector_circle" -->
</FrameLayout>
元素。
预编译错误消失了。但是当我在Lollipop设备上运行应用程序时,矢量图形绘制得非常好,但如果我在棒棒糖前设备上运行应用程序,应用程序不会失败,但根本不会绘制矢量图形。
答案 0 :(得分:2)
要解决此问题,您只需使用可以处理app:srcCompat
且AppCompatImageView
而不是ImageView
的窗口小部件。