Android自定义view之筛选按钮
来源:互联网 发布:剑灵召唤师女捏脸数据 编辑:程序博客网 时间:2024/05/16 11:43
前言:
现在市面上有很多需要判定当前的选项被选中然后在前面显示一个勾表示选中的效果,这种效果的实现方式有很多种,比如用一个button和一张图片来组合,下面是实现步骤。。先来看看简单的原型图:
步骤一:
自定义一个类,然后去继承一个Layout,这个layout可以是RelativeLayout,也可以是LinearLayout,也可以是ViewGroup,然后创建XML文件代码:
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:id=”@+id/llyt_item_filter_bg”
android:layout_width=”match_parent”
android:layout_height=”@dimen/shopping_list_flilter_input_height”
android:clickable=”true”
android:gravity=”center”
android:orientation=”horizontal”
android:paddingLeft=”@dimen/common_margin10dp”
android:paddingRight=”@dimen/common_margin10dp”
android:weightSum=”1”>
<ImageView android:id="@+id/iv_selected" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/hook_icon" /><ToggleButton android:id="@+id/tb_item" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:button="@null" android:clickable="false" android:ellipsize="end" android:maxLines="1" android:textOff="@string/shopping_list_flilter_sales" android:textOn="@string/shopping_list_flilter_sales" android:textSize="@dimen/shopping_list_filter_item_font_size" />
LinearLayout>
步骤二:重写继承layout的三个构造方法,在第三个构造发方法中去获取xml文件里面的控件,然后定义我们需要的方法。
方法一:选中与未选中的判定:
private boolean checked;
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) { this.checked = checked; if (checked) { tbItem.setChecked(true); llytItemFilterBg.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_filter_item_red_bg)); tbItem.setTextColor(getResources().getColorStateList(R.color.color_title_bg)); ivSelected.setVisibility(VISIBLE); } else { tbItem.setChecked(false); ivSelected.setVisibility(GONE); llytItemFilterBg.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_filter_item_default_bg)); tbItem.setTextColor(getResources().getColorStateList(R.color.color_default_font_color)); }}
方法二:设置和获取文字
public String getText() { return tbItem.getText() + "";}public void setText(String text) { tbItem.setText(text); tbItem.setTextOff(text); tbItem.setTextOn(text);}
方法三:重写onFinishInflate方法
@Override
protected void onFinishInflate() {
super.onFinishInflate();
setChecked(false);
}
OK,到这里一个完整的筛选控件就完成了,谢谢!
- Android自定义view之筛选按钮
- Android自定义View之自定义开关按钮
- Android开发自定义View之滑动按钮与自定义属性
- Android开发自定义View之滑动按钮与自定义属性
- 【Android自定义View】随机数按钮
- 【Android自定义View实战】之获取验证码倒计时按钮
- Android自定义view之仿微信录制视频按钮
- [Android开发] 自定义View之重写View非常简单实现开关按钮SwitchView
- Android之自定义View
- android 之自定义View
- Android之自定义View
- Android之自定义View
- Android之自定义View
- Android 之 自定义View
- 自定义View之开关按钮:SwitchButton
- Android自定义View实现开关按钮
- Android自定义view,titlebar的返回按钮
- Android自定义view,CloseView,关闭按钮
- date类型字段比较
- OpenCV自学笔记26. 写一个ROI叠加的小例子
- git基本操作方法整理
- LTE系统调试记录12:接收端画星座图
- 小项目制作:javaWeb之邮箱验证注册(javaMail+jdbc+log4j)
- Android自定义view之筛选按钮
- iOS 字典和数组写入plist文件存到应用沙盒当中(含读取)
- Spring 框架的设计理念与设计模式分析
- ubuntu下安装thrift
- python进行机器学习中的SVM
- java Class与静态初始化
- jemalloc横向分析(六)tcache_event事件执行
- CodeForces
- 设计模式之单例模式