2015-12-24 7 views
8

Voglio angolare solo la parte superiore di un cardview.Solo rotondo angolo superiore di cardview

Ho usato sotto la proprietà e sta arrotondando tutto l'angolo.

voglio mostrare una sovrapposizione di tutte le schede

card_view:cardCornerRadius="4dp" 

qui è il mio layout

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    card_view:cardCornerRadius="4dp" 
    card_view:cardPreventCornerOverlap="false" 
    > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:id="@+id/re1"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="match_parent" 
      android:layout_height="20dp" 
      android:background="@color/colorAccent" 
      android:text="contact det" 
      android:gravity="center_vertical" 
      android:textColor="@android:color/white" 
      android:textSize="14dp"/> 

     <TextView 
      android:id="@+id/txtName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Name" 
      android:gravity="center_vertical" 
      android:textSize="10dp" 
      android:layout_below="@id/title" 
      android:layout_marginTop="10dp" 
      android:layout_marginLeft="5dp"/> 

     <TextView 
      android:id="@+id/txtSurname" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Surname" 
      android:gravity="center_vertical" 
      android:textSize="10dp" 
      android:layout_below="@id/txtName" 
      android:layout_marginTop="10dp" 
      android:layout_marginLeft="5dp" 
      /> 

     <TextView 
      android:id="@+id/txtEmail" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Email" 
      android:textSize="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_alignParentRight="true" 
      android:layout_marginRight="150dp" 
      android:layout_alignBaseline="@id/txtName"/> 

     <TextView 
      android:id="@+id/txtAdd" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Address" 
      android:textSize="10dp" 
      android:layout_alignLeft="@id/txtEmail" 
      android:layout_alignBaseline="@id/txtSurname"/> 

    </RelativeLayout> 


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

risposta

0

Come per la domanda, io parto dal presupposto che si desidera applicare proprietà raggio d'angolo a solo top della carta È possibile ottenere questo effetto utilizzando due CardView. Posizionare uno CardView all'interno di un altro CardView e rimuovere la proprietà esterna del raggio d'angolo CardView. Applica anche uno sfondo trasparente al tuo esterno CardView Il tuo CardView interno avrà un valore CornerRadius di 4dp. Quindi applica un marginTop al tuo interno CardView, in modo che la sua parte inferiore venga nascosta dall'esterno CardView. In questo modo, il raggio dell'angolo inferiore del tuo interno CardView sarà nascosto.

Dovrai inserire il tuo contenuto xml nel tuo interno CardView. Esterno CardView serve solo allo scopo di nascondere gli angoli inferiori arrotondati dell'interno CardView. Il layout XML sarà simile a questa:

<?xml version="1.0" encoding="utf-8"?> 
<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="match_parent" 
    android:layout_gravity="center" 
    card_view:cardBackgroundColor="@android:color/transparent" 
    card_view:cardCornerRadius="0dp" 
    card_view:cardElevation="4dp" > 

<android.support.v7.widget.CardView 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="3dp" 
    card_view:cardElevation="0dp" 
    card_view:cardCornerRadius="4dp" 
    > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:id="@+id/re1"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="match_parent" 
      android:layout_height="20dp" 
      android:background="@color/colorAccent" 
      android:text="contact det" 
      android:gravity="center_vertical" 
      android:textColor="@android:color/white" 
      android:textSize="14dp"/> 

     <TextView 
      android:id="@+id/txtName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Name" 
      android:gravity="center_vertical" 
      android:textSize="10dp" 
      android:layout_below="@id/title" 
      android:layout_marginTop="10dp" 
      android:layout_marginLeft="5dp"/> 

     <TextView 
      android:id="@+id/txtSurname" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Surname" 
      android:gravity="center_vertical" 
      android:textSize="10dp" 
      android:layout_below="@id/txtName" 
      android:layout_marginTop="10dp" 
      android:layout_marginLeft="5dp" 
      /> 

     <TextView 
      android:id="@+id/txtEmail" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Email" 
      android:textSize="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_alignParentRight="true" 
      android:layout_marginRight="150dp" 
      android:layout_alignBaseline="@id/txtName"/> 

     <TextView 
      android:id="@+id/txtAdd" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Address" 
      android:textSize="10dp" 
      android:layout_alignLeft="@id/txtEmail" 
      android:layout_alignBaseline="@id/txtSurname"/> 

    </RelativeLayout> 


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

ho preso riferimento da questa domanda SO: Question. Spero che risolva il tuo problema.

+0

Ancora ci sono angoli in basso ... –

+0

Stai copiando esattamente lo stesso codice che ho postato in risposta? – brainbreaker

7

possiamo impostare la MarginBottom della vista carta in value.Margin negativo dovrebbe essere stesso valore di raggio carta. per esempio,

<FrameLayout 
     android:id="@+id/rootview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/card_view" 
     android:layout_marginBottom="-3dp" 
     project:cardCornerRadius="3dp" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <!--The child view inside the cardview should have extra padding,so that negative margin will not affect the bottom padding of its child.Here normally we have 16dp bottom padding for child + margin bottom of the parent is 3dp=19dp comes.--> 

     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingBottom="19dp"/> 

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

Funziona per me.but sono in dubbio se sia il modo corretto di suggerimenti doing.Any sono i benvenuti.

+0

soluzione nativa semplice. funziona per me – Bolein95

+0

funziona solo se la vista scheda è nella parte inferiore dello schermo – tymbark

Problemi correlati