如何为Simple Drawer Android的所有角落设置半径
Posted
技术标签:
【中文标题】如何为Simple Drawer Android的所有角落设置半径【英文标题】:How to set radius for all corners of Simplee Drawee Android 【发布时间】:2018-08-24 07:28:52 【问题描述】:无法为SimpleDrawee
的facebook
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:roundBottomStart
和 app: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控件