我最初是用21
(Lollipop)的minsdkversion
寫了這個SSCCE,它工作的很好。 但我的需要是在前棒棒糖中使用VectorDrawableCompat
。在SSCCE中,XML佈局中有一個ImageView
,其中圖像的來源是在res/drawable/
目錄中定義的向量圖形。如何使用AppCompat庫中的VectorDrawableCompat?
最初,當在minsdkversion
清單被設定爲21
,我用android:src="@drawable/vector_circle"
設置矢量圖形作爲圖像的在ImageView
源。這工作得很好。
然後我在清單文件中將minsdkversion
更改爲11
。我還在XML佈局中將ImageView
的android:src="@drawable/vector_circle"
屬性更改爲app:srcCompat="@drawable/vector_circle"
。 但我對app:srcCompat="@drawable/vector_circle"
線越來越
Unexpected namespace prefix "app" found for tag ImageView
。我應該如何解決這個問題?
SSCCE:
RES /抽拉/ vector_circle.xml:
<?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>
activity_main:
<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>
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
編輯:
我改變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>
並添加到xmlns:tools="http://schemas.android.com/tools"
元件FrameLayout
。
預編譯錯誤消失了。但是當我在棒棒糖設備上運行應用程序時,矢量圖形繪製得非常好,但是如果我在預棒棒糖設備上運行應用程序,應用程序不會失敗,但矢量圖形根本不繪製。
您是否看到[此問題](http://stackoverflow.com/questions/35645148/cant-use-srccompat-for-imageviews-in-android)?它可以幫助,檢查出來並寫出結果:) – Vucko
@Vucko是的,正如你所看到的,我已經使用'app:srcCompat',而不是'android:srcCompat'。我也包含了'xmlns:app'命名空間。唯一不同的是,在他們的問題中,他們提到他們已經用'build.gradle'文件做了一些事情。我使用Eclipse,所以我沒有做任何事情,我只是在我的項目中包含了AppCompat-v7庫。 – Solace
@Vucko此外,這不是一個lint錯誤。這是適當的錯誤(與Eclipse顯示紅色的undlerline和十字架),這使得項目失敗編譯 – Solace