Android开发学习笔记-自定义组合控件

为了能让代码能够更多的复用,故使用组合控件。下面是我正在写的项目中用到的方法。

1、先写要组合的一些需要的控件,将其封装到一个布局xml布局文件中。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="68dip"android:id="@+id/aaa"><TextViewandroid:id="@+id/tv_update_title"android:layout_width="match_parent"android:layout_height="wrap_content" android:textSize="20sp"android:layout_marginTop="10dp"android:layout_marginLeft="10dp"android:text="是否升级" /><TextViewandroid:layout_below="@id/tv_update_title"android:id="@+id/tv_update_content"android:textSize="15sp"android:layout_width="match_parent"android:layout_height="wrap_content" android:layout_marginTop="10dp"android:layout_marginLeft="10dp"android:text="停止更新" /><CheckBoxandroid:checked="false"android:id="@+id/cb_isupdate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true" /></RelativeLayout>

2、自定义Java类

package com.frank.mobilesafe.ui;import com.frank.mobilesafe.R;import android.R.bool;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;public class SettingItemView extends RelativeLayout {private CheckBox cb_update;private TextView tv_update_title;private TextView tv_update_content;public SettingItemView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initView(context);}private void initView(Context context) {// TODO Auto-generated method stubView.inflate(context, R.layout.setting_item_view, this);cb_update = (CheckBox) findViewById(R.id.cb_isupdate);tv_update_title =  (TextView) findViewById(R.id.tv_update_title);tv_update_content = (TextView) findViewById(R.id.tv_update_content);}public SettingItemView(Context context, AttributeSet attrs) {super(context, attrs);initView(context);}public SettingItemView(Context context) {super(context);initView(context);}/*** 检查是否选中* @return*/public boolean isChecked() {return cb_update.isChecked();}/*** 设置组合控件的状态* @param isChecked*/public void SetChecked(boolean isChecked) {cb_update.setChecked(isChecked);}/*** 设置描述信息* @param isChecked*/public void SetDesc(String text) {tv_update_content.setText(text);}
}

3、在主界面中引用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/tv_maintitle"android:layout_width="match_parent"android:layout_height="55dp"android:background="#8866ff00"android:gravity="center"android:text="设置中心"android:textSize="22sp" /><com.frank.mobilesafe.ui.SettingItemViewandroid:id="@+id/siv_update"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

4、主界面调用

public class SettingActivity extends Activity {private SettingItemView siv_update;private SharedPreferences sp_update;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_setting);siv_update = (SettingItemView) findViewById(R.id.siv_update);sp_update = getSharedPreferences("config",MODE_PRIVATE);boolean  update = sp_update.getBoolean("update", false);if (update) {siv_update.SetChecked(true);siv_update.SetDesc("有新版本则更新");}else{siv_update.SetChecked(false);siv_update.SetDesc("停止更新");}siv_update.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Editor editor = sp_update.edit();// TODO Auto-generated method stubif (siv_update.isChecked()) {siv_update.SetChecked(false);siv_update.SetDesc("停止更新");editor.putBoolean("update", false);}else{siv_update.SetChecked(true);siv_update.SetDesc("有新版本则更新");editor.putBoolean("update", true);}}});}}

5、完成

正常显示

转载于:https://www.cnblogs.com/xuhongfei/p/4009881.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础实例 韦玮 pdf_Python基础实例教程(微课版)

第 1章 初识Python 1 1.1 快速了解Python 2 1.1.1 Python的起源与背景 2 1.1.2 Python的功能 3 1.1.3 Python的优势与特色 4 1.2 在Windows下搭建Python开发环境 6 1.2.1 操作系统的选择 6 1.2.2 在Windows下安装Python 7 1.3 在Linux下搭建Python开发环境 1…

测试是否支持跨域_浅谈跨域威胁与安全

WEB前端中最常见的两种安全风险&#xff0c;XSS与CSRF&#xff0c;XSS&#xff0c;即跨站脚本攻击、CSRF即跨站请求伪造,两者属于跨域安全攻击&#xff0c;对于常见的XSS以及CSRF在此不多谈论&#xff0c;仅谈论一些不太常见的跨域技术以及安全威胁。一、 域域&#xff0c;即域…

LeetCode 1752. 检查数组是否经排序和轮转得到

文章目录1. 题目2. 解题1. 题目 给你一个数组 nums 。 nums 的源数组中&#xff0c;所有元素与 nums 相同&#xff0c;但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置&#xff08;包括 0 个位置&#xff09;得到&#xff0c;则返回 true &#xff1b;否则&#xf…

linux-3.4.2移植到FL2440上(一)--只是基本移植

1.修改Makefile&#xff1a;ARCH ? armCROSS_COMPILE ? arm-linux-2.修改串口时钟&#xff1a;在/arch/arm/mach-s3c24xx/mach-smdk2440.c改为12Ms3c24xx_init_clocks(12000000);/* by zhutao */3.裁剪内核&#xff1a; │ -> System Type …

ts自动编译声明文件_拥抱 TS:细数选择 TS 的 N 种理由

作者 | 马靖day day up, bye bye bug最近在做一个新项目&#xff0c;技术大佬告知前端要用 TS 。前端小白的我内心疑惑“弱类型语言它不香嘛&#xff0c;为什么选择 TS &#xff1f;” 为了紧随大佬的流星大步&#xff0c;拥抱变化。带着这个疑惑我积(被)极(破)主(营)动(业)点开…

java分治法求数列的最大子段和_Java十大经典排序算法动画解析和 代码实现

排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。常见的内部排序算法有&#xff1a;…

岭回归预测PM2.5

# -*- coding: utf-8 -*- # File : demo2.py # Author : CJH # Date : 2019/4/9 # Software: PyCharm # Desc : 天气PM2.5预测import csv import numpy as np from numpy import * import matplotlib.pyplot as plt from sklearn import linear_modeltrainingData t…

LeetCode 1753. 移除石子的最大得分(优先队列)

文章目录1. 题目2. 解题2.1 优先队列2.2 脑筋急转弯1. 题目 你正在玩一个单人游戏&#xff0c;面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子&#xff0c;并在得分上加 1 分。 当存在 两个或更多 …

基于Spring框架的Shiro配置

http://kdboy.iteye.com/blog/1103794 一、在web.xml中添加shiro过滤器 Xml代码 <!-- Shiro filter--> <filter> <filter-name>shiroFilter</filter-name> <filter-class> org.springframework.web.filter.Delegating…

dat文本导入mysql_mysql学习笔记(九) 增删改查的优化

一、大批量插入数据当使用load命令导入数据的时候&#xff0c;可以适当的提高导入的速度。对于myisam存储引擎的表可以通过下述方法快速的导入大量的数据。Alter table tablename disable keys;Loading dateAlter table tabename enable keys;其中disable keys和enable keys用来…

asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...

DEEPEXI 大前端常人道&#xff0c;一入开发深似海&#xff0c;技术学习无止境。在新技术层出不穷的前端开发领域&#xff0c;有一群身怀绝技的开发&#xff0c;他们在钻研前沿技术的同时&#xff0c;也不忘分享他们的成果&#xff0c;回馈社区。下面&#xff0c;就由小水滴带大…

债券收益率预测模型_利率预测模型系列之二:利率预测模型带来的启示

利率预测模型带来的启示在《利率预测模型系列之一&#xff1a;简单的N-S 模型运用》中&#xff0c;我们对收益率曲线预测模型进行了简单介绍&#xff0c;该模型能够给我们提供较好的利率及收益率曲线预测效果。当然&#xff0c;在理论上&#xff0c;还有更多更复杂的利率预测模…

LeetCode 1751. 最多可以参加的会议数目 II(DP + 二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个 events 数组&#xff0c;其中 events[i] [startDayi, endDayi, valuei] &#xff0c;表示第 i 个会议在 startDayi 天开始&#xff0c;第 endDayi 天结束&#xff0c;如果你参加这个会议&#xff0c;你能得到价值 valuei 。 同时给你…

SemEval-2010任务8:成对名词之间的语义关系的多分类

摘要SemEval-2任务8专注于名词对之间语义关系的多分类。 该任务旨在比较语义关系分类的不同方法&#xff0c;并为将来的研究提供标准的测试平台。 本文定义了任务&#xff0c;描述了训练和测试数据及其创建过程&#xff0c;列出了参与的系统&#xff08;10个团队&#xff0c;28…

tomcat GET 编码疑惑

本机开发环境 Windows tomcat eclipse 测试运行环境 Linux tomcat 大部分人知道&#xff0c;客户端GET方式提交的数据&#xff0c;tomcat默认按 iso-8859-1 处理。POST 方式 UTF-8。 今天遇到了GET也是默认按照UTF-8处理的情况&#xff0c;但是并未对tomcat的server.xml做过处理…

python恶搞代码打开对方摄像头_用Python获取摄像头并实时控制人脸的实现示例

实现流程 从摄像头获取视频流&#xff0c;并转换为一帧一帧的图像&#xff0c;然后将图像信息传递给opencv这个工具库处理&#xff0c;返回灰度图像&#xff08;就像你使用本地静态图片一样&#xff09; 程序启动后&#xff0c;根据监听器信息&#xff0c;使用一个while循环&am…

LeetCode 992. K 个不同整数的子数组(双指针)

文章目录1. 题目2. 解题1. 题目 给定一个正整数数组 A&#xff0c;如果 A 的某个子数组中不同整数的个数恰好为 K&#xff0c;则称 A 的这个连续、不一定独立的子数组为好子数组。 &#xff08;例如&#xff0c;[1,2,3,1,2] 中有 3 个不同的整数&#xff1a;1&#xff0c;2&a…

压缩可以卸载吗_番禺街坊注意!微信发送高清大文件不压缩,网友:QQ可以卸载了?...

刚上新了表情包的微信又双叒叕出新功能了这次的功能有点实用昨天&#xff0c;腾讯微信团队宣布微信已支持向朋友发送高清视频和图片且不会被压缩微信用户点击对话框右下角的号右滑点击文件在上方选择手机相册就能选择用户想要发送的视频和图片了目前通过「文件」方式发送的内容…

从一个视图控制器切换到另一个视图控制器的几种方式

从一个视图控制器切换到另一个视图控制器的几种方式1,模态(modal)画面的显示方法&#xff1a;例如iphone通讯录管理程序中&#xff0c;追加新的通讯纪录时&#xff0c;就是使用这种模态画面例&#xff1a;点击一个按钮&#xff0c;进入另一个界面- (IBAction)pressAbout:(id)se…

python暂停和恢复_python – 暂停和恢复QThread

我正在尝试暂停QThread并恢复它. 所以,我在QThread中有一个RFID读取循环,我想在阅读器获得RFID代码时暂停无限循环.之后,有一个数据库检查.在检查结束时,我想恢复RFID阅读循环以获取其他代码. MVCE&#xff1a; def main(): global Thread app QtGui.QApplication(sys.argv) m…