如何为Simple Drawer Android的所有角落设置半径

Posted

技术标签:

【中文标题】如何为Simple Drawer Android的所有角落设置半径【英文标题】:How to set radius for all corners of Simplee Drawee Android 【发布时间】:2018-08-24 07:28:52 【问题描述】:

无法为SimpleDraweefacebook android sdk 的所有角设置半径。 我尝试过的:-

RoundingParams roundingParams = RoundingParams.fromCornersRadii(8f,8f,8f,8f);
            mSimpleDrawee.setHierarchy(new GenericDraweeHierarchyBuilder(getResources())
                    .setRoundingParams(roundingParams)
                    .build());

也尝试在 xml 中设置:

<com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/image"
                android:layout_
                android:layout_
                app:roundedCornerRadius="8dp"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"

                />

但两者都只设置左上角半径。

【问题讨论】:

什么是simpledrawee? AFAIK android 不提供任何名为simpledraweeview 的小部件。如果您的问题是关于 Facebook 的 simpledraweeview,请添加此问题并为其添加适当的标签。 是的,它只适用于 facebook 【参考方案1】:

添加您的 xml 布局

android:background="@drawable/round_corner"

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid android:color="#FFFFFF" />

<corners android:radius="15dp" />

【讨论】:

【参考方案2】:

在您的 xml 中使用此 Imageview 代码,希望它能正常工作

 <com.facebook.drawee.view.SimpleDraweeView
      android:id="@+id/image"
      android:layout_
      android:layout_
      android:adjustViewBounds="true"                
      fresco:roundedCornerRadius="10dp"
      fresco:roundTopLeft="true"
      fresco:roundTopRight="true"
      fresco:roundBottomLeft="true"
      fresco:roundBottomRight="true"
      fresco:roundTopStart="true"
      fresco:roundTopEnd="true"
      fresco:roundBottomStart="true"
      fresco:roundBottomEnd="true"
      />

【讨论】:

去掉这行 android:adjustViewBounds="true" 再试一次 对此也无济于事,只有左上角和左下角变圆了 所以现在的替代解决方案是使用卡片视图作为父视图并放置 SimpleDraweeView 【参考方案3】:

在构造层次结构时,您可以将 RoundingParams 的实例传递给您的 GenericDraweeHierarchyBuilder

 RoundingParams roundingParams = RoundingParams.fromCornersRadius(8f);
 mSimpleDraweeView.setHierarchy(new GenericDraweeHierarchyBuilder(getResources())
    .setRoundingParams(roundingParams)
    .build());

如果要通过.xml

添加
<com.facebook.drawee.view.SimpleDraweeView
...
fresco:roundedCornerRadius="8dp"
fresco:roundBottomStart="false"
fresco:roundBottomEnd="false"
fresco:roundWithOverlayColor="@color/blue"
fresco:roundingBorderWidth="1dp"
fresco:roundingBorderColor="@color/red"
>

【讨论】:

【参考方案4】:

在drawable下有一个像rounded_corners.xml这样的drawable。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android: android:color="@color/primary" />
<corners android:radius="25dp"/>
</shape>

然后尝试将其设置为您需要圆角的布局,例如

android:background="@drawable/rounded_corner_4"

【讨论】:

【参考方案5】:

有两个参数 app:roundBottomStartapp:roundBottomEnd 您在 xml 中将两个主题都设置为 true,您将在所有图像上获得一个圆角

  app:roundedCornerRadius="8dp"
  app:roundBottomStart="false"
  app:roundBottomEnd="false"

【讨论】:

以上是关于如何为Simple Drawer Android的所有角落设置半径的主要内容,如果未能解决你的问题,请参考以下文章

Android on Drawer Closed Listener

如何在 Android 中为 Navigation Drawer 添加一个分区分隔符?

怎么自定义有navigation drawer效果的Android控件

如何为 AVD 管理器创建自定义 Android 设备配置文件?

如何为 android 创建通知之类的 inshorts

如何为 Android 升级 ProGuard?