我使用支持库在android kitkat上显示矢量图像。当我在emulater上测试我的应用程序时,我没有看到任何这些图像。我为Android棒棒糖及以上版本制作了一个单独的布局,它完美地工作(我认为因为我使用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预览窗口看到了这些图片。
答案 0 :(得分:165)
在布局中使用var recordsNotFound = File1Lines.Keys.Except(FoundRecords);
foreach (var name in recordsNotFound)
{
// look up item in the dictionary to report not found
}
代替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>
文档here和AppCompatImageView
here。
设置app:srcCompat
build.gradle
使用android {
defaultConfig {
vectorDrawables {
useSupportLibrary = true
}
}
}
Activity
AppCompatActivity
使用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>
课程中的setCompatVectorFromResourcesEnabled
Application
答案 1 :(得分:14)
我遇到了类似问题,在完成Jared Burrows's answer的所有步骤后,问题仍未解决。
原来那个&#34; app&#34;我的布局文件中的命名空间设置为:
xmlns:app="http://schemas.android.com/tools"
而不是:
xmlns:app="http://schemas.android.com/apk/res-auto"
更改此问题后,问题已解决
答案 2 :(得分:1)
实施和app:srcCompact
,然后您可以在ImageView
implementation 'com.android.support:appcompat-v7:28.0.0'
确保实现正确的版本。
然后在您的build.gradle
集android.defaultConfig.vectorDrawables.useSupportLibrary = true
defaultConfig {
//...
vectorDrawables {
useSupportLibrary true
}
}
答案 3 :(得分:1)
问题也出在我的代码上。 解决方案:随着Android升级到Androidx Artifacts, 我用的不是常规,而是有效!
答案 4 :(得分:0)
使用:
android:background="@drawable/circle_icon"
而不是:
app:srcCompat="@drawable/circle_icon"
答案 5 :(得分:0)
此外,请确保矢量可绘制对象位于drawable
中,而不位于drawable-anydpi
中。
如果图形位于drawable-anydpi
文件夹中,我经常会遇到问题。
答案 6 :(得分:0)
总结:
在模块中添加矢量可绘制支持(build.gradle)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
使用android:src="@drawable/icon"
代替app:srcCompat="@drawable/icon"
请确保没有此步骤的Activity extends AppCompatActivity
不能使用app:srcCompat
答案 7 :(得分:0)
万一其他人遇到此问题并正在使用 androidx ,然后尝试使用 androidx.appcompat.widget.AppCompatImageView