CircleImageView 不显示图像

Posted

技术标签:

【中文标题】CircleImageView 不显示图像【英文标题】:CircleImageView not showing the image 【发布时间】:2020-06-07 17:35:11 【问题描述】:

即使在将源设置为我的 circulerView 之后,它也没有显示任何图像,但是当我使用简单的 ImageView 时它可以正常工作。 我有 cardview 和 constrainLayout ,我正试图把我的 CirculerImageView 放在上面。 此外,当我设置背景时,它会显示图像,但以方形形式显示。 为什么我的 CirculerView 不工作? 我应该创建一个新的原始环形文件吗?

请帮帮我。

我的 .xml 文件

         <?xml version="1.0" encoding="utf-8"?>
        <androidx.constraintlayout.widget.ConstraintLayout 

    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:id="@+id/constrain_layout"
        android:orientation="vertical">

<androidx.cardview.widget.CardView
    android:id="@+id/driverInfo"
    android:layout_
    android:layout_
    android:layout_marginBottom="8dp"
    android:background="@drawable/rectangle"
    map:layout_constraintBottom_toBottomOf="@+id/map"
    map:layout_constraintEnd_toEndOf="@+id/map"
    map:layout_constraintStart_toStartOf="parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_
        android:layout_>

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/imageView2"
            android:layout_
            android:layout_
            android:layout_marginStart="20dp"
            android:layout_marginTop="30dp"
            android:drawingCacheQuality="high"
            map:layout_constraintStart_toStartOf="parent"
            map:layout_constraintTop_toTopOf="parent"
            tools:srcCompat="@drawable/userimage" />

        <RatingBar
            android:id="@+id/ratingBar"
            style="?android:attr/ratingBarStyleSmall"
            android:layout_
            android:layout_
            android:layout_marginStart="10dp"
            android:layout_marginTop="62dp"
            android:isIndicator="true"
            android:numStars="5"
            android:stepSize="0.1"
            map:layout_constraintStart_toEndOf="@+id/imageView2"
            map:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView4"
            android:layout_
            android:layout_
            android:layout_marginStart="10dp"
            android:layout_marginTop="38dp"
            android:text="Vaibhav"
            android:textColor="#323643"
            map:layout_constraintStart_toEndOf="@+id/imageView2"
            map:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/callDriver"
            android:layout_
            android:layout_
            android:layout_marginStart="62dp"
            android:layout_marginTop="37dp"
            android:background="@drawable/buttonrect"
            android:text="Call Driver"
            android:textColor="#FFFFFF"
            android:textSize="14sp"
            map:layout_constraintStart_toEndOf="@+id/ratingBar"
            map:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_
    android:layout_
    map:layout_constraintBottom_toBottomOf="parent"
    map:layout_constraintEnd_toEndOf="parent"
    map:layout_constraintHorizontal_bias="1.0"
    map:layout_constraintStart_toStartOf="parent"
    map:layout_constraintTop_toTopOf="parent"
    map:layout_constraintVertical_bias="1.0"
    tools:context=".HomeActivity" />

<EditText
    android:id="@+id/myLocation"
    android:layout_
    android:layout_
    android:layout_marginTop="16dp"
    android:background="@drawable/edittextlocation"
    android:drawingCacheQuality="high"
    android:ems="10"
    android:hint="My Location"
    android:inputType="textPersonName"
    android:paddingStart="40dp"
    android:textSize="14sp"
    android:viewportWidth="335"
    android:viewportHeight="48"
    map:layout_constraintEnd_toEndOf="@+id/map"
    map:layout_constraintStart_toStartOf="@+id/map"
    map:layout_constraintTop_toBottomOf="@+id/appBarLayout" />

<EditText
    android:id="@+id/destination"
    android:layout_
    android:layout_
    android:background="@drawable/destination"
    android:drawingCacheQuality="high"
    android:ems="10"
    android:hint="Destination Please! ?"
    android:inputType="textPersonName"
    android:paddingStart="40dp"
    android:textSize="14sp"
    map:layout_constraintEnd_toEndOf="@+id/map"
    map:layout_constraintStart_toStartOf="@+id/map"
    map:layout_constraintTop_toBottomOf="@+id/myLocation" />


<com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_
    android:layout_
    map:layout_constraintEnd_toEndOf="parent"
    map:layout_constraintStart_toStartOf="parent"
    map:layout_constraintTop_toTopOf="parent">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/main_toolbar"
        android:layout_
        android:layout_
        android:layout_gravity="center">

        <TextView
            android:id="@+id/toolbar_title"
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:textColor="#323643"
            android:textSize="18dp" />
    </androidx.appcompat.widget.Toolbar>

</com.google.android.material.appbar.AppBarLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

你是否实现了这一行到依赖实现'de.hdodenhof:circleimageview:3.1.0'? 您如何使用 glide 或 picasso 或任何其他方式将图像加载到圆形图像视图 @ManiKandan 是的,我实现了。 @SilverskyTechnology 现在我只处理 XML 代码,我正在使用 srcCompat 加载图像,你可以在 XML 代码中看到它。 你也可以在没有circleimageview库的情况下使用glide来圈出图片 【参考方案1】:

只需替换-:

<de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/imageView2"
            android:layout_
            android:layout_
            android:layout_marginStart="20dp"
            android:layout_marginTop="30dp"
            android:drawingCacheQuality="high"
            map:layout_constraintStart_toStartOf="parent"
            map:layout_constraintTop_toTopOf="parent"
            tools:srcCompat="@drawable/userimage" />

与-:

<de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/imageView2"
            android:layout_
            android:layout_
            android:layout_marginStart="20dp"
            android:layout_marginTop="30dp"
            android:drawingCacheQuality="high"
            map:layout_constraintStart_toStartOf="parent"
            map:layout_constraintTop_toTopOf="parent"
            android:src="@drawable/userimage" />


android:src="@drawable/userimage"

【讨论】:

使用tools:srcCompat 只会在布局编辑器中显示图像,您通常使用tools:... 用于在编辑时需要图像或文本等以供参考但实际上并不想要它会在实际运行时显示在应用程序中。【参考方案2】:

尝试使用普通 ImageView 并使用以下代码动态更改形状。

profile = new ImageView(ProfileActivity.this);
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.avatar);
Bitmap circularBitmap = ImageConverter.getRoundedCroppedBitmap(bitmap, 100);
profile.setImageBitmap(circularBitmap);

【讨论】:

【参考方案3】:

在java文件中试试这个代码不需要使用外部库来制作圆形图像视图

Glide.with(context)
        .load(url)
        .apply(RequestOptions.circleCropTransform())
        .into(imageView);

【讨论】:

以上是关于CircleImageView 不显示图像的主要内容,如果未能解决你的问题,请参考以下文章

圆形图片库显示方形图片

在 CircleImageView 中缩放不同大小的图像的问题

android开发中imageview能显示gif动画吗

如何将 circleimageview 保持在 CardView 之前?在约束布局?

android 如何重写imageview 让图片有圆角效果

Android之CircleImageView使用