自定義控件SettingItemView

一、效果圖



選中:顯示自動更新開啟
不選擇:顯示自動更新關閉
------------
在布局文件中的使用方式和android自生的控件一樣
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:zengmg="http://schemas.android.com/apk/res/com.zengmg.MobileSafe"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewstyle="@style/ActivityTitle"android:text="@string/settingTitle" /><com.zengmg.MobileSafe.view.SettingItemViewandroid:id="@+id/siv_update"android:layout_width="match_parent"android:layout_height="wrap_content"zengmg:desc_off="自動更新關閉"zengmg:desc_on="自動更新開啟"zengmg:title="自動更新設置" /></LinearLayout>


二、步驟

思路:模仿android定義好的控件來寫

1、寫好布局文件
2、編寫自定義 attrs.xml
3、編寫自定義控件代碼
4、在activity中使用,增加點擊事件代碼

三、各步驟代碼

控件名:SettingItemView

3.1布局文件:activity_setting.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:zengmg="http://schemas.android.com/apk/res/com.zengmg.MobileSafe"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewstyle="@style/ActivityTitle"android:text="@string/settingTitle" /><com.zengmg.MobileSafe.view.SettingItemViewandroid:id="@+id/siv_update"android:layout_width="match_parent"android:layout_height="wrap_content"zengmg:desc_off="自動更新關閉"zengmg:desc_on="自動更新開啟"zengmg:title="自動更新設置" /></LinearLayout>

注意:需要加入一個自定義的xml聲明:
xmlns:zengmg="http://schemas.android.com/apk/res/com.zengmg.MobileSafe"
聲明中的 zengmg 是配置屬性時的頭。
zengmg:desc_off="自動更新關閉"
zengmg:desc_on="自動更新開啟"
zengmg:title="自動更新設置" 

3.2?自定義 attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="SettingItemView"><attr name="title" format="string" /><attr name="desc_on" format="string" /><attr name="desc_off" format="string" /></declare-styleable><!-- 在D:\ADT\sdk\platforms\android-16\data\res\values\attrs.xml 文件中找 name="TextView"。name="SettingItemView" 是控件名--></resources>

3.3 自定義控件代碼?SettingItemView.java
package com.zengmg.MobileSafe.view;import com.zengmg.MobileSafe.R;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;/*** 設置頁面的自定義控件* 布局文件在:view_setting_item.xml* 屬性文件在:values/attrs.xml。(通過查看Android自帶的控件找到的)* * @author zengmg* */
public class SettingItemView extends RelativeLayout {private static final String NAMESPACE = "http://schemas.android.com/apk/res/com.zengmg.MobileSafe";private TextView tvTitle;private TextView tvDesc;private CheckBox cbState;private String mtitle;private String mDescOn;private String mDescOff;public SettingItemView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public SettingItemView(Context context, AttributeSet attrs) {super(context, attrs);mtitle=attrs.getAttributeValue(NAMESPACE, "title");mDescOn=attrs.getAttributeValue(NAMESPACE, "desc_on");mDescOff=attrs.getAttributeValue(NAMESPACE, "desc_off");initView();}public SettingItemView(Context context) {super(context);}public void initView(){//View android.view.View.inflate(Context context, int resource, ViewGroup root)//將自定義好的布局文件設置給當前的SettingItemView控件//當SettingItemView控件被使用時,文件view_setting_item里的布局就被顯示了View.inflate(getContext(), R.layout.view_setting_item, this);tvTitle=(TextView) findViewById(R.id.tv_title);tvDesc=(TextView) findViewById(R.id.tv_desc);cbState=(CheckBox) findViewById(R.id.cb_status);setMtitle(mtitle);}public String getMtitle() {return tvTitle.getText().toString();}public void setMtitle(String mtitle) {tvTitle.setText(mtitle);}public String getmDescOn() {return tvDesc.getText().toString();}public void setmDescOn(String mDescOn) {tvDesc.setText(mDescOn);}public String getmDescOff() {return tvDesc.getText().toString();}public void setmDescOff(String mDescOff) {tvDesc.setText(mDescOff);}public boolean isChecked() {return cbState.isChecked();}public void setChecked(boolean mIsChecked) {cbState.setChecked(mIsChecked);if(mIsChecked){tvDesc.setText(mDescOn);}else{tvDesc.setText(mDescOff);}}}

有關
View.inflate(getContext(), R.layout.view_setting_item, this);
參見:
http://blog.csdn.net/zengmingen/article/details/49975753

3.4 在activity使用的代碼

package com.zengmg.MobileSafe.activity;import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;import com.zengmg.MobileSafe.R;
import com.zengmg.MobileSafe.view.SettingItemView;public class SettingActivity extends Activity{private SettingItemView sivUpdate;private SharedPreferences mPref;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_setting);mPref = getSharedPreferences("config", MODE_PRIVATE);sivUpdate=(SettingItemView) findViewById(R.id.siv_update);boolean autoUpdate=mPref.getBoolean("auto_update", true);sivUpdate.setChecked(autoUpdate);sivUpdate.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(sivUpdate.isChecked()){//不自動更新sivUpdate.setChecked(false);mPref.edit().putBoolean("auto_update", false).commit();}else{//自動更新sivUpdate.setChecked(true);mPref.edit().putBoolean("auto_update", true).commit();}}});}
}





本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539954.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539954.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539954.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php中如何存儲多個文本框,php-如何將每個字符的文本框拆分為多個子文本框

我正在設計一個PHP表單,其中包含一些輸入字段,如下圖所示.如何將輸入類型(文本框)拆分為單個字符子文本框,或將文本框拆分為給定字符串的每個字符的多列文本框.以及如何在其中插入數據| JOHN DOE |進入| J | O | H | N | | D | O | E |這樣解決方法:的HTML的CSS#text{backgroun…

為什么會有 AOP

為什么80%的碼農都做不了架構師&#xff1f;>>> AOP 面向切面的編程。 先上三張圖片 三處對數據庫進行操作&#xff0c; 但這三處有大量的重復的代碼&#xff0c;每次都是獲取session&#xff0c;獲取mapper&#xff0c;執行&#xff0c; commit&#xff0c;close…

PHP有表單和js交互亂碼問題,js 和 php交互問題

就是前端js發送數據給php處理&#xff0c;然后處理完之后接受php發送的返回結果&#xff0c;不用ajax&#xff0c;有其他的方法嗎&#xff1f;多謝&#xff01;iframe 公子 說的很明白了。Flashiframe內嵌個表單提交到PHP頁面并顯示結果&#xff0c;JS讀取iframe頁面內的內容即…

Android應用檢查更新下載安裝打開

一、效果 低版本1.02檢測到新版本1.03 調用android的安裝activity頁面 安裝完成 打開 1.03版本 二、注意 必須使用簽名的應用。因為android不管是虛擬機還是真機安裝應用都需要簽名。 在開發時&#xff0c;我們運行程序時&#xff0c;開發環境ADT會自動給我們加入一個默認的…

lnmp解析php,搭建LNMP,可以解析PHP文件-Go語言中文社區

一、安裝 nginx1. yum -y install pcre-devel zlib-devel links 下載相應軟件可以使用rpm -qa 軟件名 來查看是否安裝成功??2.useradd -u 250 -M -s /sbin/nologin nginx 建立程序用戶&#xff0c;降低權限3.tar xf nginx-1.6.0.tar.gz -C /usr/src/nginx 解壓并指定…

Linux vi 編輯器常見命令的使用

Linux vi 編輯器常見命令的使用 Linux下的文本編輯器有很多種&#xff0c;vi 是最常用的&#xff0c;也是各版本Linux的標配。注意&#xff0c;vi 僅僅是一個文本編輯器&#xff0c;可以給字符著色&#xff0c;可以自動補全&#xff0c;但是不像 Windows 下的 word 有排版功能。…

給控件添加小圖標

一、效果 二、知識點 三、代碼 <TextViewstyle"style/ContentStyle"android:drawableLeft"android:drawable/star_big_on"android:gravity"center"android:text"遠程鎖屏:#*lockscreen*#" />

加速計算,為何會成為 AI 時代的計算力“新寵”

隨著科技的發展&#xff0c;處理大量數據和進行復雜計算的需求越來越高&#xff0c;人工智能、大數據和物聯網等領域更是如此&#xff0c;傳統的計算方式已經無法滿足這些需求。因此&#xff0c;加速計算作為一種現代計算方式&#xff0c;成了必要的手段。加速計算具有前所未有…

Java中nextfloat怎么用,關于java的nextFloat()后面跟一個nextLine()

ArrayList studentInfors new ArrayList();Scanner sc new Scanner(System.in);for (int i 0; i StudentInfor studentInfor new StudentInfor();System.out.print("請輸入學生學號&#xff1a;");studentInfor.setNum(sc.nextLine());System.out.print("請…

背景選擇器selector替換按鈕默認背景

一、效果 正常狀態 獲取焦點或按下 按鈕的背景圖片是.9圖&#xff0c;.9圖的制作過程&#xff0c;見下面博文 http://blog.csdn.net/zengmingen/article/details/50193245 二、步驟 模仿android自帶的按鈕控件編寫1、找到android自帶按鈕的樣式。D:\ADT\sdk\platforms\andro…

php 取數值整數的函數是,PHP取整數函數常用的四種方法小結

ceil — 進一法取整說明float ceil ( float value )返回不小于 value 的下一個整數&#xff0c;value 如果有小數部分則進一位。ceil() 返回的類型仍然是 float&#xff0c;因為 float 值的范圍通常比 integer 要大。例子 1. ceil() 例子echo ceil(4.3); // 5echo ceil(9.999);…

ios 獲取控件高度

2019獨角獸企業重金招聘Python工程師標準>>> 1.ios 獲取控件相對屏幕的位置 需要獲取的對象為view1&#xff0c;則該視圖相對屏幕的位置可使用下面方法實現&#xff1a; UIWindow * window[[[UIApplication sharedApplication] delegate] window]; CGRect rect[view…

php文件上傳前端頁面樣式,HTML實現美化上傳文件樣式

這篇文章介紹的內容是HTML實現美化上傳文件i樣式 &#xff0c;有著一定的參考價值&#xff0c;現在分享給大家&#xff0c;有需要的朋友可以參考一下傳統寫法上傳文件效果如下圖所示這個樣式調整了很長時間&#xff0c;最后結果都不盡人意。非常規寫法上傳文件上傳給真正的用于…

jquery mobile用代碼彈出dialog

一、點擊彈出dialog 見http://www.w3school.com.cn/jquerymobile/jquerymobile_pages.asp中“將頁面作為dialog”這節二、代碼彈出 思路&#xff1a;模擬一個點擊事件。1、在頁面上隱藏一個<a>,如下 <a id"test" href"#pagetwo" style"displ…

畢設開發日志2017-12-01-Scan超時

【前言】 本篇博客主要描述一下在開發過程中遇到的scan的超時問題。 【問題描述】 剛剛完成了對索引表的定義和建議&#xff0c;并且在單元測試中對該表進行插入和掃描時均未發現錯誤。但是在對該表進行整體更新時&#xff0c;需要在掃描weather表的過程中對該表進行不斷的更新…

ubuntu java 1.6 安裝,ubuntu 中安裝java jdk 1.6

--------------------------------------------------------------------------------------------本文系本站原創,歡迎轉載!轉載請注明出處:http://blog.csdn.net/gdt_a20/article/details/7307681-------------------------------------------------------------------------…

Oracle修改表結構字段名和字段長度

添加字段的語法&#xff1a;alter table tablename add (column datatype [default value][null/not null],….); 修改字段的語法&#xff1a;alter table tablename modify (column datatype [default value][null/not null],….); 刪除字段的語法&#xff1a;alter table tab…

php快速排序實現代碼,快速排序的算法php實現

function qsort(&$arr){_quick_sort($arr, 0, count($arr) - 1);}/*** 采用遞歸算法的快速排序。** param array $arr 要排序的數組* param int $low 最低的排序子段* param int $high 最高的排序字段*/function _quick_sort(&$arr, $low, $high){$low_data $arr[$low…

08-spring學習-annotation配置

利用annotation配置注入關系 為了更好的解釋此類存在的意義&#xff0c;下面通過一段習慣性的開發進行問題的描述&#xff0c;例如&#xff1a; 現在有一個IAdminService服務層&#xff0c;這個服務層要調用的是IAdminDAO和IRoleDAO兩個數據層操作&#xff0c;于是定義如下&…

JQuery 綁定select標簽的onchange事件

原文出處&#xff1a;http://blog.csdn.net/a5489888/article/details/20045175 使用jqm的change事件 <script src"jquery.min.js" type"text/javascript"></script> <script language"javascript" type"text/javascript&q…