私は最初(Lollipop)のminsdkversion
でこのSSCCEを書いて、うまくいきました。 しかし、私の必要性は、VectorDrawableCompat
をロリポップ前に使うことです。 SSCCEには、XMLレイアウトにImageView
があり、画像のソースはres/drawable/
ディレクトリに定義されたベクターグラフィックです。 minsdkversion
がマニフェストに21
に設定した場合AppCompatライブラリのVectorDrawableCompatの使用方法は?
まず、IはImageView
における画像のソースとしてベクタ形式を設定するandroid:src="@drawable/vector_circle"
を使用します。これはうまくいった。
次に、マニフェストファイルのminsdkversion
を11
に変更しました。また、ImageView
のandroid:src="@drawable/vector_circle"
属性をapp:srcCompat="@drawable/vector_circle"
というXMLレイアウトに変更しました。 しかし、私は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);
}
}
EDIT:
私はまた、にlayout-v21/activity_main.xml
を添加
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/vector_circle"
tools:ignore="MissingPrefix" />
にres/layout/activity_main.xml
年代ImageView
要素を変更ディレクトリ:
<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
に要素を追加しました。
プレコンパイルエラーがなくなりました。しかし、私がLollipopデバイスでアプリを実行すると、ベクターグラフィックスは完全にうまく描画されますが、アプリをあらかじめロリポップデバイスで実行すると、アプリケーションは失敗しませんが、ベクターグラフィックはまったく描画されません。
あなたは[この質問](http://stackoverflow.com/questions/35645148/cant-use-srccompat-for-imageviews-in-android)を見ましたか? – Vucko
@Vuckoはい、ご覧のとおり、私は 'android:srcCompat'ではなく' app:srcCompat'を使っています。私は 'xmlns:app'名前空間も含めました。異なるのは、彼らの質問では、 'build.gradle'ファイルで何かをやったことがあるということだけです。私はEclipseを使用しているので、何もしなかったので、私はちょうど私のプロジェクトにAppCompat-v7ライブラリを含めました。 – Solace
@Vuckoさらに、これは糸くずれのエラーではありません。プロジェクトをコンパイルできないようにするのは、適切なエラーです(Eclipseで赤色のアンダーラインとクロスが表示されます) – Solace