2015-07-08 2 views
19

как мне избавиться от этого странного дополнения в компоновщике ниже:Android CardView удалить обивка

enter image description here

<?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="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@color/ColorPrimaryDark"> 

    <android.support.v7.widget.CardView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     card_view:cardCornerRadius="10dp" 
     android:layout_marginTop="9dp" 
     android:layout_marginLeft="9dp" 
     android:layout_marginRight="9dp" 
     card_view:cardElevation="0.01dp" 
     android:layout_marginBottom="0dp" 
     card_view:cardPreventCornerOverlap="true" 
     card_view:cardUseCompatPadding="true" 
     card_view:cardBackgroundColor="@color/ColorPrimary"> 

     <RelativeLayout 
      android:id="@+id/top_layout" 
      android:layout_width="fill_parent" 
      android:layout_height="180dp" 
      android:background="@color/ColorPrimary"> 

      <ImageView 
       android:id="@+id/img_thumbnail" 
       android:layout_width="fill_parent" 
       android:layout_height="180dp" 
       android:scaleType="fitXY" 
       android:background="@drawable/korabltest"/> 

      <RelativeLayout 
       android:id="@+id/inner_layout" 
       android:layout_width="fill_parent" 
       android:layout_height="36dp" 
       android:background="#5c1b1b1b" 
       android:layout_gravity="bottom" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true"> 

       <TextView 
        android:id="@+id/tv_nature" 
        android:layout_width="wrap_content" 
        android:layout_height="50dp" 
        android:paddingLeft="5dp" 
        android:paddingRight="5dp" 
        android:layout_gravity="bottom" 
        android:gravity="center_vertical" 
        android:alpha="0.8" 
        android:textColor="#fff" 
        android:textSize="18sp" 
        android:text="Lexington" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="true" /> 

       <TextView 
        android:id="@+id/tv_nature_1" 
        android:layout_width="wrap_content" 
        android:layout_height="50dp" 
        android:paddingLeft="5dp" 
        android:paddingRight="5dp" 
        android:layout_gravity="bottom" 
        android:gravity="center_vertical" 
        android:alpha="0.8" 
        android:textColor="#fff" 
        android:textSize="18sp" 
        android:textStyle="bold" 
        android:text="527 (31%)" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentEnd="true" /> 
      </RelativeLayout> 
     </RelativeLayout> 
    </android.support.v7.widget.CardView> 

</LinearLayout> 
+0

вы говорите о прокладке между картами? – 3xplore

ответ

39

UDPATE

Ну, кажется, есть гораздо более простой способ сделайте это, не догадываясь о прокладке и все:

card_view:cardPreventCornerOverlap="false" 

или с использованием Java:

cardView.setPreventCornerOverlap(false) 

Вы можете прочитать все об этом here.

ОРИГИНАЛЬНОГО ОТВЕТ

Это намеренная обивка, чтобы избежать содержания от кровотечения от закругленного угла карты в предварительно версии леденца (с отсечением не доступно). Если вы хотите, чтобы избавиться от него все вместе вы можете использовать отрицательные отступы в версиях до леденцов для атрибута contentPaddingCardView, такие как:

card_view:contentPadding="-8dp" 

или с использованием Java:

int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()); 
cardView.setContentPadding(-padding,-padding,-padding,-padding); 

I «Я не особо уверен, какое значение будет работать без проблем, вам нужно будет поэкспериментировать и убедиться сами.

+0

спасибо за ответ, но после смены card_view: cardPreventCornerOverlap на false, закругленные углы исчезли вообще, а не просто квадрат. –

+0

@ IvanFazaniuk Да, я не пробовал атрибут 'cardPreventCornerOverlap'. Попробуйте это, явно установив «cardCornerRadius». Может работать. Если это не так, отрицательный 'contentPadding' будет делать трюк: углы остаются нетронутыми. Я сам это пробовал. – fahmy

+0

Есть ли способ сделать это в XML? – tccpg288

3

Получил ту же проблему, и this работал для меня.

app:cardPreventCornerOverlap="false" 

Для устройства с API < 21, я должен был сделать пользовательский класс ImageView, переопределить OnDraw рисовать круглые углы.

@Override 
protected void onDraw(Canvas canvas) { 
    float radius = getContext().getResources().getDimension(R.dimen.card_corner_radius); 
    Path path = new Path(); 
    RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight()); 
    path.addRoundRect(rect, radius, radius, Path.Direction.CW); 
    canvas.clipPath(path); 
    super.onDraw(canvas); 
} 
2

Пожалуйста, удалите это из вашего кода -

card_view:cardUseCompatPadding="true" 
0

использовать это:

cardView.setPadding(0,0,0,0); 
cardView.setUseCompatPadding(true); 
cardView.setContentPadding(-6,-6,-6,-6); 
cardView.setPreventCornerOverlap(false); 
Смежные вопросы