本文主要是介绍android material 组件 - ShapeableImageView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ShapeableImageView
com.google.android.material.imageview.ShapeableImageView 官方material 库 1.2.0 版本中新组件,非常棒的圆角切角边框图片控件。
引入库:
implementation 'com.google.android.material:material:1.2.0'
简单演示圆角带边框的ImageView
:
xml代码:
<com.google.android.material.imageview.ShapeableImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:padding="1dp"android:scaleType="centerCrop"android:src="@mipmap/ic_img"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MaterialComponents.FloatingActionButton"app:strokeColor="#ff0000"app:strokeWidth="2dp" />
app:strokeColor
和 app:strokeWidth
很好理解,分别是边框颜色和边框宽度
1 app:shapeAppearanceOverlay
这个呢就是圆角或者切角的关键属性了,
演示的代码使用的是material库中自带的style,如下:
<style name="ShapeAppearance.MaterialComponents.LargeComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_large_component</item></style><style name="ShapeAppearance.MaterialComponents.MediumComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_medium_component</item></style><style name="ShapeAppearance.MaterialComponents.SmallComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_small_component</item></style><style name="ShapeAppearance.MaterialComponents.Test" parent=""><item name="cornerFamily">rounded</item><item name="cornerSize">10px</item></style><style name="ShapeAppearance.MaterialComponents.Tooltip" parent=""><item name="cornerFamily">rounded</item><item name="cornerSize">4dp</item></style><style name="ShapeAppearanceOverlay" parent=""/><style name="ShapeAppearanceOverlay.BottomLeftDifferentCornerSize"><item name="cornerSizeBottomLeft">20px</item></style><style name="ShapeAppearanceOverlay.BottomRightCut"><item name="cornerFamilyBottomRight">cut</item></style><style name="ShapeAppearanceOverlay.Cut"><item name="cornerFamily">cut</item></style><style name="ShapeAppearanceOverlay.DifferentCornerSize"><item name="cornerSize">20px</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.BottomSheet" parent=""><item name="cornerSizeBottomRight">0dp</item><item name="cornerSizeBottomLeft">0dp</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.Chip" parent=""><item name="cornerSize">50%</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.ExtendedFloatingActionButton" parent=""><item name="cornerSize">@null</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.FloatingActionButton" parent=""><item name="cornerSize">50%</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Day" parent=""><item name="cornerSize">@dimen/mtrl_calendar_day_corner</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Window.Fullscreen" parent=""><item name="cornerSize">0dp</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Year" parent=""><item name="cornerSize">@dimen/mtrl_calendar_year_corner</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.TextInputLayout.FilledBox" parent=""><item name="cornerSizeBottomLeft">@dimen/mtrl_textinput_box_corner_radius_small</item><item name="cornerSizeBottomRight">@dimen/mtrl_textinput_box_corner_radius_small</item></style><style name="ShapeAppearanceOverlay.TopLeftCut"><item name="cornerFamilyTopLeft">cut</item></style><style name="ShapeAppearanceOverlay.TopRightDifferentCornerSize"><item name="cornerSizeTopRight">20px</item></style>
大家可以按照需求自定义style以达到目的
注意:关于描边宽度需要注意的是,和自定义View一样,描边的宽度是中心点在Layout边界,所以是Layout边界内外均分strokeWidth的,所以描边是可能超出Layout边界的,造成截断的效果,所以可以设置内padding来处理溢出。
也就是说如果需求边框宽度为2dp那么需要设置android:padding="1dp"
以此类推,padding值为stokeWith值得一半
参考文章:shapeableImageView
这篇关于android material 组件 - ShapeableImageView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!