CardView的角半径在Google Maps InfoWindow中的行为异常

时间:2019-02-13 20:50:15

标签: android google-maps cardview

似乎相同的XML布局代码在InfoWindow和“正常”活动/片段中的工作方式不同。

我正在自定义我的Google Maps InfoWindow。我已经对其应用了圆角(我使用getInfoWindow()),现在我想使ImageView也具有圆角。当InfoWindow打开时,它显示如下 Broken InfoWindow 在我看来,这很奇怪,因此我将CardView和ImageView代码(如下所述)粘贴到了活动中。这就是它的样子(不看内容,它是在运行时加载的) Fine InfoWindow

我的代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:background="@drawable/rounded_corners_bg">

    <androidx.cardview.widget.CardView
        android:id="@+id/container"
        android:layout_width="240dp"
        android:layout_height="160dp"
        android:elevation="0dp"
        android:background="@android:color/black"
        app:cardCornerRadius="32dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:cardElevation="0dp"
        app:contentPadding="0dp">

        <ImageView
            android:id="@+id/imageInfoWindow"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            app:srcCompat="@drawable/opactwo_2" />


    </androidx.cardview.widget.CardView>

    <TextView <!-- Doesn't matter -->

    <TextView <!-- Doesn't matter -->

    <TextView <!-- Doesn't matter -->
</androidx.constraintlayout.widget.ConstraintLayout>

我发现相同的代码会产生不同的结果。我的问题是为什么它不起作用,我应该怎么做才能使其起作用?我既不应用任何主题,也不在运行时修改视图。

1 个答案:

答案 0 :(得分:0)

所以,我用 https://github.com/rishabh876/RoundedImageView 这个代替 imageView 并使用 Glide 来下载图片

                    @Override
                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {

                        if (!isFromMemoryCache) {
                            marker.showInfoWindow();
                        }
                        return false;
                    }
                })
                .into(viewHolder.imageView);