我想实现一种具有线性布局和少量小部件以及阴影效果(例如高程)的设计,但是我无法正确获得阴影。
我尝试在线性布局中添加高程no,但是在设计中没有显示任何效果。
我也尝试过cardview,但是我没有得到想要的阴影效果。
我的Recylerview项目XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="10dp"
android:outlineProvider="bounds">
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_rectangle_rounded_corner_black"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingStart="20dp">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="13dp"
android:layout_height="13dp"
android:background="@color/colorPrimary"
android:visibility="gone"
app:civ_border_width="1dp"/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/font_avenirltstd_book"
android:textColor="@color/color_light_grey"
android:textSize="14sp"
tools:text="12 PM"/>
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:layout_alignParentEnd="true"
android:fontFamily="@font/font_avenirltstd_book"
android:text="2.1 mi."
android:textColor="@color/color_light_grey"
android:textSize="14sp"/>
</RelativeLayout>
<TextView
android:id="@+id/tv_workout_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingStart="20dp"
android:fontFamily="@font/font_avenirltstd_heavy"
android:textColor="@color/color_black_1"
android:textSize="24sp"
tools:text="HIIT Workout"/>
<TextView
android:id="@+id/tv_type_of_booking"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="20dp"
android:paddingStart="20dp"
android:fontFamily="@font/font_avenirltstd_book"
android:text="One-Time Booking"
android:textColor="@color/color_light_grey"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
我的RecyclerView项目:
<RelativeLayout 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/white"
android:clipToPadding="false">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#F3f3f3"
android:clipToPadding="false">
<com.marcohc.robotocalendar.RobotoCalendarView
android:id="@+id/robotoCalendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="10dp"
android:visibility="visible"
app:mcv_calendarMode="month"
app:mcv_dateTextAppearance="@style/CalendarDateTextAppearance"
app:mcv_headerTextAppearance="@style/CalendarHeaderTextAppearance"
app:mcv_leftArrow="@drawable/mcv_action_previous"
app:mcv_monthLabels="@null"
app:mcv_rightArrow="@drawable/mcv_action_next"
app:mcv_selectionColor="@color/color_red"
app:mcv_selectionMode="single"
app:mcv_showOtherDates="out_of_range"
app:mcv_weekDayTextAppearance="@style/CalendarWeekTextAppearance"/>
<View
android:id="@+id/view_1"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_below="@+id/msvw"
android:background="@drawable/shadow"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_sessions_list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:1)
您必须使用CardView
才能获得阴影效果。尝试将以下布局用作RecyclerView项,并查看其是否有效。
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="10dp"
app:cardUseCompatPadding="true"
app:cardCornerRadius="10dp">
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_rectangle_rounded_corner_black"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingStart="20dp">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="13dp"
android:layout_height="13dp"
android:background="@color/colorPrimary"
android:visibility="gone"
app:civ_border_width="1dp"/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/font_avenirltstd_book"
android:textColor="@color/color_light_grey"
android:textSize="14sp"
tools:text="12 PM"/>
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:layout_alignParentEnd="true"
android:fontFamily="@font/font_avenirltstd_book"
android:text="2.1 mi."
android:textColor="@color/color_light_grey"
android:textSize="14sp"/>
</RelativeLayout>
<TextView
android:id="@+id/tv_workout_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingStart="20dp"
android:fontFamily="@font/font_avenirltstd_heavy"
android:textColor="@color/color_black_1"
android:textSize="24sp"
tools:text="HIIT Workout"/>
<TextView
android:id="@+id/tv_type_of_booking"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="20dp"
android:paddingStart="20dp"
android:fontFamily="@font/font_avenirltstd_book"
android:text="One-Time Booking"
android:textColor="@color/color_light_grey"
android:textSize="14sp"/>
</LinearLayout>
如果您使用的是AndroidX库,请用AndroidX CardView标记替换标记android.support.v7.widget.CardView
。通过使用cardCornerRadius
标签,您无需为LinearLayout提供自定义背景。
此外,不要忘记检查清单文件中的hardwareAccelerated = true。如果您要定位API 14+,这已经是事实。如果将其设置为false,您将看不到阴影。
答案 1 :(得分:1)
如果您来检查为什么海拔在您的 cardview
上不起作用,我犯的一个错误是我必须更改:
android:elevation="8dp"
与
app:cardElevation="10dp"
答案 2 :(得分:0)
根据我的了解,这是我对您的建议:
将顶级RelativeLayout设置为具有与您要在其上显示阴影的相对布局上设置的边距相等的边距;
在同一RelativeLayout上设置android:clipToPadding="false"
;
从同时设置了高程的RelativeLayout中删除边距;
您可能还需要在需要加高的子布局上设置非透明背景颜色。
答案 3 :(得分:0)
您正在寻找Android CardView
。将日历和每个元素放在卡片中。
更改卡片高度以修改阴影大小。