使用srcCompat属性

时间:2017-04-09 05:02:12

标签: java android android-layout android-imageview

我有另一个活动,其布局有RelativeLayout,TextViews和ImageView ......这里没有问题。

使用下面的这个其他Activity我有很多TextViews和RelativeLayout。当我添加Imageview时,收到以下错误:

  

错误:(190)找不到属性'srcCompat'的资源标识符   package'com.example.ftonyan.userposts'错误:(190)没有资源   在包中找到属性'srcCompat'的标识符   'com.example.ftonyan.userposts'错误:任务执行失败   ':应用程序:processDebugResources'。

     
    

com.android.ide.common.process.ProcessException:无法执行aapt

  

在添加imageview之前,此问题活动的layout.xml的顶部部分如下所示(代码在模拟器上编译并运行)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

将图像视图添加到调色板后,以下2行为红色(注意系统添加了第2行)。代码不再编译。

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

下面是我的Activity layout.xml。此布局中大约有19个textView。为简洁起见,我没有将所有这些都包括在内。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">


    <TextView
        android:id="@+id/lblAddressees"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/lblNick"
        android:layout_toStartOf="@+id/nickName"
        android:text="Addressees:" />

    <Button
        android:id="@+id/goBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:background="@android:color/transparent"
        android:text="back" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button6"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="87dp"
        android:srcCompat="@mipmap/ic_launcher" />

</RelativeLayout>

我在这里阅读了一些帖子,建议更改apk / res-auto行。但是,在系统添加之前,该行不在文件中。所以,不知道我应该做些什么来解决这个问题。提前致谢

5 个答案:

答案 0 :(得分:0)

您需要为Imageview添加命名空间代码

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

命名空间'schemas.android.com/tools'用于指定Android Studio构建应用程序的选项,并且不包含在最终的应用程序包中

命名空间'schemas.android.com/apk/res-auto'用于所有自定义属性 - 在库或代码中定义。

答案 1 :(得分:0)

在项目中打开应用级build.gradle文件,添加以下行

defaultConfig {
   vectorDrawables.useSupportLibrary = true
}

并同步您的项目。那就是它。

答案 2 :(得分:0)

我明白了。我错过了这一行

tools:context="packagename.nameofAttivity">

谢谢大家

答案 3 :(得分:0)

检查这个 Android image not showing in imageview

在这篇文章中我告诉过这个--- ......你应该将srcCompat编辑为src。 src用于源和sourceCompat用于在ICS上运行的Android设备的向量可绘制文件的向后兼容性 - IceCream Sandwich。

答案 4 :(得分:0)

首先,无需添加android:srcCompat来设置默认图像。

因为app:srcCompat用于向后兼容支持库的向量drawable。

请尝试android:src="@mipmap/ic_launcher"android:background="@mipmap/ic_launcher"

但是,如果您想使用srcCompat属性,则只需将android:srcCompat更改为app:srcCompat中的ImageView