1. ホーム
  2. android

[解決済み] CardView コーナー半径

2022-10-22 22:37:16

質問

CardViewの角の半径を上部だけにする方法はありますか?

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="10dp"
    >

どのように解決するのですか?

Android の CardView クラスを拡張しない限り、その属性を XML .

それにもかかわらず、その効果を得る方法があるのです。

を配置します。 CardView の中に別の CardView に透明な背景を適用し、外側の CardView を削除し、その角の半径を ( "cornerRadios = 0dp" ). あなたの内側の CardView は、例えば3dpのcornerRadiusの値を持つことになります。次に、marginTopを内側の CardView に marginTop を適用すると、その底辺は外側の CardView . このようにすると、内側の CardView は隠されます。

XMLのコードは以下の通りです。

 <android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view_outer"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_gravity="center"
    card_view:cardBackgroundColor="@android:color/transparent"
    card_view:cardCornerRadius="0dp"
    card_view:cardElevation="3dp" >

    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view_inner"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_gravity="center"
        android:layout_marginTop="3dp"
        card_view:cardBackgroundColor="@color/green"
        card_view:cardCornerRadius="4dp"
        card_view:cardElevation="0dp" >
    </android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>

そして、視覚効果は次のようになります。

コンテンツは常にインナーに置く CardView . 外側のCardViewは、内側のCardViewの下部のRounded Cornersを隠すためだけのものです。 CardView .