最近ui给了个需求,要实现一个用户列表,要求和qq类似在线高亮,不在线要灰暗,选中具有放大效果。
分析:圆角可以采用自定义view,CardView。这里采用后者符合MD风格嘛,CardView不能设置背景,它只提供了一个背景色设置的属性,因此需要采用View叠加来实现灰暗,选中高亮等状态。放大效果我做的时候出现过一些小问题,比如被父控件所限制,RecyclerView位置的限制啊,最后采用clipChildren属性得到解决,这个属性默认为true.意思是是否限制子视图在其范围内。我们把它设置为false。下面通过详细代码来看看如何实现的。
activity的布局放置一个recyclerView就可以了。主要看看
item布局
android:id="@+id/item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:background="@color/transparent"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
android:id="@+id/device"
android:layout_width="54dp"
android:layout_height="54dp"
app:cardCornerRadius="4dp"
app:cardElevation="0dp"
android:layout_marginLeft="11dp"
>
android:id="@+id/iv_pic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
/>
android:id="@+id/tv_name"
android:layo