栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android

控件大体可以分为三大类

1 自制型控件:继承View类绘制控件。

2 组合型控件:将原生态系统提供的控件,按照一定的布局特性组装起来,形成具有新的功能型的控件。

 3 扩展型控件:在原生态控件上增添新的功能的控件。

自定义控件的属性可以更好的使用自定义ViewUI的相关引用,在使用之前,必须引用自定义属性,相当于引用第三方控件的名字的控件。

xmlns:current="http://schemas.android.com/apk/com.example.mobileguard"

 xmlns 即xml nameSpace。这里命名控件的名字current,在接下来使用属性的时候,才会使用current。

命名的格式:

xmlns:current[自定义的名]="http://schemas.android.com/apk/com.example.mobileguard[包名]"

有的命名格式这样:

xmlns:current="http://schemas.android.com/apk/res_auto
首先自定义继承RelativeLayout类:代码如下
package com.example.mobileguard.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.Nullable;

import com.example.mobileguard.R;
import com.example.mobileguard.utils.CenterLog;


public class SetTextView extends RelativeLayout {
    private TextView tv_desc; //描述
    private TextView tv_title; //标题
    private CheckBox cd_state; //
    private String title,desc_off,desc;
    public SetTextView(Context context) {
        super(context);
        initView(context);
    }

    public SetTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initView(context);
        //System.out.println("================"+attrs.getAttributevalue(0));
        //   xmlns:current="http://schemas.android.com/apk/com.example.mobileguard"
        //获取属性值
        title = attrs.getAttributevalue("http://schemas.android.com/apk/com.example.mobileguard","title");
        desc = attrs.getAttributevalue("http://schemas.android.com/apk/com.example.mobileguard","desc");
        desc_off = attrs.getAttributevalue("http://schemas.android.com/apk/com.example.mobileguard","desc_off");
        tv_title.setText(title);
        tv_desc.setText(desc_off);
    }

    public SetTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);
    }

    public SetTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initView(context);
    }

    
    private void initView(Context context) {
       //把一个布局文件——View加载到SetTextView上
        View.inflate(context, R.layout.text_item_layout,SetTextView.this);
        tv_title = (TextView) findViewById(R.id.tv_name);
        tv_desc = (TextView) findViewById(R.id.tv_desc);
        cd_state = (CheckBox)findViewById(R.id.cb_state);
    }

    
    public boolean isChecked(){
        return  cd_state.isChecked();
    }

    
    public void  setChecked(boolean state){
        if(state){
            setDesc(desc);
        }else {
           setDesc(desc_off);
        }
        cd_state.setChecked(state); //设置复选框的状态
    }

    public void setDesc(String msg){
        tv_desc.setText(msg);
    }
}

 

自定义属性:在vlues 文件夹下创建attrs.xml文件。具体代码如下


    
    
        
        
        
    
在layout布局文件中使用:


    
    
调用的:
package com.example.mobileguard;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.transition.Fade;
import android.view.View;

import com.example.mobileguard.config.ConFig;
import com.example.mobileguard.config.Constant;
import com.example.mobileguard.ui.SetTextView;
import com.example.mobileguard.utils.CenterLog;

public class SetCenterActivity extends Activity {

    private SetTextView sv_update;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_seeting_center);
        getWindow().setEnterTransition(new Fade()); //Activity动画 淡入淡出效果
        getWindow().setExitTransition(new Fade());
        sv_update = (SetTextView) findViewById(R.id.st_update); //获取自定义组合控件
        if(条件为true){
            sv_update.setChecked(true);
            //sv_update.setDesc("自动升级已经开启");
        }else {
            sv_update.setChecked(false);
            //.setDesc("自动升级已经关闭");
        }

        sv_update.setonClickListener(new View.onClickListener() { //为组合控件设置监听事件
            @Override
            public void onClick(View v) {
                //CenterLog.ToastMakeMessage(SetCenterActivity.this,sv_update.isChecked()+"");
                if(sv_update.isChecked()){
                    sv_update.setChecked(false);
                   // sv_update.setDesc("自动升级已经关闭");
         
                }else {
                    sv_update.setChecked(true);
                   // sv_update.setDesc("自动升级已经开启");
    
                }

            }
        });

    }
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号