2015-11-20 2 views
6

Я хочу создать этот макет
enter image description hereсоздать вид cardview в андроиде

это cardview (серый вид) и ImageView (синий вид) для этого я использую этот код

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/abc_search_url_text_normal" 
android:orientation="vertical"> 

<android.support.v7.widget.CardView 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_alignParentBottom="true" 
    android:layout_gravity="bottom" 
    android:layout_marginBottom="3dp" 
    android:paddingTop="5dp" 
    app:cardBackgroundColor="@color/abc_input_method_navigation_guard"> 


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

<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_gravity="bottom" 
    android:layout_marginBottom="30dp" 
    android:layout_marginRight="10dp" 
    android:scaleType="fitXY" 
    android:src="@drawable/abc_ratingbar_full_material" /> 

</FrameLayout> 

но в результате мой образ изображения, идущий к обратному картографированию, я пытаюсь выполнить reletivelayout вместо framelayout, но тот же результат.

ответ

5

Try:

  • Используйте RelativeLayout

  • Совместите ImageView к родительскому правой/конца и добавить правый/концевую маржа

  • Совместите FAB к верхней части карты и добавить отрицательный запас


<RelativeLayout 
    ...> 
    <CardView 
    android:id="@+id/cardView" 
    android:layout_width="match_parent" 
    android:layout_height="120dp" 
    /> 

    <ImageView 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@id/cardView" 
    android:layout_marginTop="-32dp" 
    android:layout_marginRight="20dp" 
    /> 

</RelativeLayout> 
+0

спасибо @cw, но есть способ сделать в XML – max

+0

Я обновил свой ответ –

+0

я сделать тоже, но интересные вещи здесь, это не работа с картой. Я делаю это раньше с другим типом вида и работает, но с картой нет – max

11

CardView имеет по высоте по умолчанию в API 21+, вы можете манипулировать высоту быть меньше, чем у ImageView

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

<ImageView 
     android:id="@+id/image_view_user" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:elevation="2dp"/> 

в Pre 21 вы можете использовать

overlayView.bringToFront(); 
root.requestLayout(); 
root.invalidate(); 

Это не сработает в 21+, если у вас есть другая отметка

1

Просто поместите CardView в другое представление li ke в FrameLayout. Так же, как показано ниже:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_marginStart="10sp" 
android:layout_marginEnd="10sp" 
> 
<FrameLayout 
    android:layout_marginTop="15sp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="100sp" 
     app:cardCornerRadius="5sp" 
     app:cardBackgroundColor="@color/colorPrimary"> 
    <!--other view items --> 
    </android.support.v7.widget.CardView> 
</FrameLayout> 
    <de.hdodenhof.circleimageview.CircleImageView 
     android:layout_width="90sp" 
     android:layout_height="90sp" 
     app:civ_border_width="2dp" 
     android:layout_marginStart="10sp" 
     app:civ_border_color="@color/colorPrimaryDark" 
     android:id="@+id/profileImg" 
     android:background="@drawable/ic_if_profle_1055000" 
     xmlns:app="http://schemas.android.com/apk/res-auto"/> 

Скриншот:

Image over CardView

Смежные вопросы