SwitchCompat和CardView使用总结
2017-02-21 本文已影响2697人
艾伦oy
1. android.support.v7.widget.SwitchCompat
SwitchCompat
是早期switch的升级版,更美观还增加了滑动动画,兼容android5.0以下,使用这个控件需要在build.gradle
文件中增加官方提供的依赖包compile "com.android.support:appcompat-v7:25.1.1
下面是基本的实现方法:
<android.support.v7.widget.SwitchCompat
android:id="@+id/sc_receive_phone_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" /> ```
![效果图](http:https://img.haomeiwen.com/i3384890/9d98a0ef67d4df22.png?imageMogr2/auto-orient/strip%7CimageView2/1/w/800)
像上面这样的写法它系统默认获取`color.xml`文件的 `<color name="colorAccent">#FF4081</color>`中的颜色,如果我们需要改变颜色和样式的话那就需要自定义属性了,思想自定义SwitchCompat也很简单!请继续往下看
#######1.1 自定义SwitchCompat
假如我要把粉红色改成蓝色的话那就自定义style咯,在style.xml文件中增加style.
android提供了属性供我们自定义,是不是很贴心。
<style name="MySwitch" parent="Theme.AppCompat.Light">
<!--开启时的颜色-->
<item name="colorControlActivated">@color/colorPrimary</item>
<!--关闭时的颜色-->
<item name="colorSwitchThumbNormal">@color/divider_color</item>
<!--关闭时的轨迹颜色取30%的颜色-->
<item name="android:colorForeground">@color/divider_color</item>
</style>
在布局文件中给需要自定义控件中增加` app:theme="@style/MySwitch"`
自定义样式,
完整代码如下:
<android.support.v7.widget.SwitchCompat
android:id="@+id/sc_receive_phone_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:theme="@style/MySwitch" />
![效果图.png](http:https://img.haomeiwen.com/i3384890/e18558c33fe614c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
哈哈,自定义颜色完成了,进行一下其他的修改吧,
`app:switchMinWidth="50dp"`自定义宽度![](http:https://img.haomeiwen.com/i3384890/92274266551f916f.png?imageMogr2/auto-orient/strip%7CimageView2/0/w/100)
` app:thumbTintMode="src_in"`去掉开关阴影![](http:https://img.haomeiwen.com/i3384890/be42745606068a08.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
添加监听事件:
mSc.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
isChecked = true;
} else {
isChecked = false;
}
}
});
>上面是使用SwitchCompat常用到的属性,不常用到的属性像什么给这个按钮增加文字文字间距什么的我就不介绍了,android提供的SwitchCompat我觉得挺好看的,只需要根据项目的主题自定义一下颜色就够用了,SwitchCompat就总结到这里啦,
##2. android.support.v7.widget.CardView
>CardView是android5.0增加的卡片式特性,它是一个布局容器ViewGroup!在item列表中我很喜欢用这个控件,item的左右下会有阴影后会给人一种很清新的风格,它也需要增加android提供的依赖包`compile "com.android.support:cardview-v7:25.1.0"` 如果你不想添加依赖包的话....可以自己自定义ViewGroup
基本使用方法:
<android.support.v7.widget.CardView
android:layout_width="200dp"
app:cardElevation="10dp"
app:cardCornerRadius="10dp"
android:layout_gravity="center_horizontal"
android:layout_height="200dp">
<TextView
android:text="CardView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:textSize="25sp"
android:id="@+id/textView" />
</android.support.v7.widget.CardView>
CardView三个个主要的属性就是` app:cardElevation="10dp"阴影的大小`和 `app:cardCornerRadius="10dp"卡片的圆角大小` `app:card_view:contentPadding="5dp" 卡片内容于边距的间隔` 通常都是4dp左右,阴影效果如果太大了看起来很丑的哦,这里为了演示所以设置10dp
![效果图](http:https://img.haomeiwen.com/i3384890/3df2e30fce48ac65.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300)
加上`android:foreground="?attr/selectableItemBackground"`效果棒棒哒
![效果图.png](http:https://img.haomeiwen.com/i3384890/71750c50d35614f1.gif?imageMogr2/auto-orient/strip)