0

Android Studio版本:2.3.3,Android 4.3CardView:圖像的邊角在Android 4.3中不是圓角的?

我正在使用CardView並希望圓形圖像的邊角。

佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_width="@dimen/card_width" 
    android:layout_height="@dimen/card_width" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:orientation="vertical"> 
    <android.support.v7.widget.CardView 
     android:id="@+id/card_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     card_view:cardCornerRadius="15dp"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       android:src="@drawable/img_lights" /> 
     </RelativeLayout> 
    </android.support.v7.widget.CardView> 
</LinearLayout> 

正如你可以SES我設置

card_view:cardCornerRadius="15dp

下面是結果:

Not round image

但圖像的角不圓。爲什麼?

+1

可能重複[如何使圓角的ImageView?](https://stackoverflow.com/questions/2459916/how-to-make-an-imageview-with-rounded-corners) –

回答

-1

添加到app

app:cardCornerRadius="15dp" 
app:cardUseCompatPadding="true" 

然後導入必要的值!

+0

沒有幫助: 'xmlns:app =「http://schemas.android.com/apk/res-auto」app:cardCornerRadius =「15dp' – user8542613

+0

我發現了這個問題,這是因爲我從Android 4.3開始,如果我從Android 6.0開始 - 然後一切正常 – user8542613

+0

我發現你的東西添加在佈局上,我已經編輯了答案,並考慮upvoting,如果它的工作原理! – Xenolion

1

正如cardUseCompatPadding屬性的docs說:

CardView增加了額外的填充棒棒堂之前繪製的平臺上陰影。

這可能會導致卡片在棒棒糖和棒棒糖之間有不同的尺寸。如果您需要將CardView與其他視圖對齊,則可能需要api特定於版本的維度資源來說明更改。作爲替代方案,您可以將此標誌設置爲true,並CardView將增加對平臺棒棒糖和之後的相同填充值..

應用app:cardUseCompatPadding="true"CardView

+0

已更新的回答 – azizbekian

+0

我回答了同樣在這裏下面,但我很驚訝,他說這不起作用,他低估了它!他怎麼不對他工作?@azizbekian – Xenolion

0

嘗試添加以下drawable作爲圖像的背景。

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scaleType="centerCrop" 
    android:background="drawable/rounded" 
    android:src="@drawable/img_lights" /> 

繪製/ rounded.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <solid android:color="#FFFFFF" /> 
    <corners android:radius="15dp" /> 

</shape> 
+0

我知道,通過「形狀」我可以做到這一點。我只想通過CardView元素來做到這一點。 – user8542613

0

您所看到的填充是支持年齡大於20 API爲了讓您的佈局看起來一樣要麼在預棒棒糖結果(和CardView小部件)或棒棒糖和較新的,Android引入了一些額外的屬性。

因爲重疊內容 - 四捨五入 - 對於較舊的Android版本來說很困難,所以cardPreventCornerOverlap已被添加並且已被默認設置爲true。這就是爲什麼圖像周圍出現白色條紋。

刪除此填充關閉cardPreventCornerOverlap

  • 通過XML通過card_view:cardPreventCornerOverlap="false"

  • 編程通過yourCardView.setPreventCornerOverlap(false):你可以做到這一點。

請記住,這會給你只有API 20+的效果。 在具有較舊版本系統的設備上,您的圓角將不可見(隱藏在非圓形圖像下)。

瞭解更多檢查the CardView doc。在第一段中,您可以找到關於您的問題的官方說明。