1. ホーム
  2. android

[解決済み] Android ベクター描画可能アプリ:srcCompatで画像が表示されない。

2023-04-01 02:26:37

質問

android kitkatでベクター画像を表示するためにsupport libraryを使っています。エミュレータでアプリをテストすると、これらの画像が表示されません。私はandroid lollipop以上のために別のレイアウトを作り、それは完全に動作しました(私は私が使用しているためだと思う src 属性の代わりに srcCompat 以下は、サポートライブラリを使用しているコードです。

<LinearLayout android:layout_alignParentBottom="true"
android:id="@+id/lake_detail"
android:background="@drawable/my_fishing_plan_footer_line"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="90dp"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<RelativeLayout
            android:layout_marginRight="3dp"
            android:id="@+id/fire_logo"
            android:layout_width="20sp"
            android:layout_height="20sp">

            <ImageView
                android:tint="#d74313"
                app:srcCompat="@drawable/circle_icon"
                android:layout_width="30sp"
                android:layout_height="30sp" />

            <ImageView
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                app:srcCompat="@drawable/lauzaviete"
                android:layout_width="25dp"
                android:layout_height="25dp" />

        </RelativeLayout>

と表示され、android studioのプレビュー画面では画像が表示されるので不思議です。

どのように解決すればよいのでしょうか?

オリジナルの回答

使用方法 android.support.v7.widget.AppCompatImageView の代わりに ImageView の代わりに、このようなレイアウトにします。

<LinearLayout 
  ...
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">

  <android.support.v7.widget.AppCompatImageView
    android:tint="#d74313"
    app:srcCompat="@drawable/circle_icon"
    android:layout_width="30sp"
    android:layout_height="30sp" />

  <android.support.v7.widget.AppCompatImageView
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    app:srcCompat="@drawable/lauzaviete"
    android:layout_width="25dp"
    android:layout_height="25dp" />
</LinearLayout>

を参照してください。 AppCompatImageView ドキュメント ここで app:srcCompat ここで .

また、以下を必ず行ってください。

をセットアップする。 build.gradle

android {
  defaultConfig {
    vectorDrawables {
      useSupportLibrary = true
    }
  }
}

Docs https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html#com.android.build.gradle.internal.dsl.VectorDrawablesOptions:useSupportLibrary

あなたの ActivityAppCompatActivity

public final class MainActivity extends AppCompatActivity {    
  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
  }
}

を使用する場合 app:srcCompat を使用する場合は、レイアウトに正しい宣言があることを確認してください。

<LinearLayout 
  ...
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
  ...
</LinearLayout>

オプション(警告:docsを読んでください)。 setCompatVectorFromResourcesEnabled の中に Application クラス

public class App extends Application {

  @Override public void onCreate() {
    super.onCreate();

    // Make sure we use vector drawables
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  }
}

Docs: https://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html#setCompatVectorFromResourcesEnabled(boolean)