android clipChildren不能正常工作

时间:2018-07-09 21:10:04

标签: android xml clip cornerradius

我在裁剪约束布局视图时遇到问题。

这是我的xml布局代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/deck_card_corner_radius"
  android:clipChildren="true"
>
  <ImageView
    android:id="@+id/imageView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:scaleType="centerCrop"
    app:srcCompat="@drawable/splashscreen" />

</android.support.constraint.ConstraintLayout>

deck_card_corner_radius

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient android:angle="270" android:endColor="#316db2" android:startColor="#316db2" />
  <corners android:bottomLeftRadius="30dp" android:bottomRightRadius="30dp" android:topLeftRadius="30dp" android:topRightRadius="30dp"/>
</shape>

没有图片,我明白了

no image src

附图片

not clipping corner

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

如何使用CardView?

我不认为设置圆形背景实际上会“塑造”视图半径。它仍然是带有尖锐边缘的矩形,只是在其中渲染了圆形的背景。您可以通过查看布局编辑器来检查。如果单击该视图,则即使设置了四舍五入的背景,也知道它实际上不是四舍五入的。

我一直在使用CardView,它运行良好。

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardPreventCornerOverlap="false"
    app:cardCornerRadius="4dp"
    app:cardUseCompatPadding="true">

           <!-- Content goes here i.e. ImageView, ConstraintLayout, etc... -->

</android.support.v7.widget.CardView>

此处最重要的是 app:cardPreventCornerOverlap=false 。它剪切内容,以便它可以平滑地放入容器视图中,而无需任何不必要的填充。该文档为here