• android项目自定义组合控件添加属性


    首先要在values文件下新建立一个文件arrts.xml,这个文件就是用来说明键名称是做什么的,和值的类型

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
         <declare-styleable name="SeetingView">
            <attr name="up" format="string" />
            <attr name="down_on" format="string" />
            <attr name="down_off" format="string" />
        </declare-styleable>
    </resources>

    然后在应用的布局里需要加上命名空间,第二行就是自己的命名空间,这个组成就是前面的xmlns:itheima名字然后是"http://schemas.android.com/apk/res/+包名

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:itheima="http://schemas.android.com/apk/res/com.itheima.superman"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/home_bg">
    
        <TextView 
            style="@style/TitleStyle"
            android:text="设置中心"
            />
        <com.itheima.view.SeetingView
            android:id="@+id/stv_updata"
            android:layout_marginTop="5dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            itheima:up="自动更新设置"
            itheima:down_on="自动更新已经开启"
             itheima:down_off="自动更新已经关闭"
            />
       
    
    </LinearLayout>

    最后我们就要在自定义控件的类里获取这些值了然后给他们设置上。

    package com.itheima.view;
    
    import com.itheima.superman.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;
    
    public class SeetingView extends RelativeLayout{
    
        private TextView tv_up;
        private TextView tv_down;
        private CheckBox ck_right;
        private String up;
        private String down_on;
        private String down_off;
        //命名空间
        private String nameSpace = "http://schemas.android.com/apk/res/com.itheima.superman";
        //自定义样式调用
        public SeetingView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            initView();
        }
        //自定义属性调用
        public SeetingView(Context context, AttributeSet attrs) {
            super(context, attrs);
            //获取命名空间下,键名称为“up”的值
            up = attrs.getAttributeValue(nameSpace, "up");
            down_on = attrs.getAttributeValue(nameSpace, "down_on");
            down_off = attrs.getAttributeValue(nameSpace, "down_off");
            initView();
        }
        //声明调用
        public SeetingView(Context context) {
            super(context);
            initView();
        }
        //初始化布局
        private void initView(){
            //给这个布局一个父控件
            View.inflate(getContext(),R.layout.item_seeting, this);
            tv_up = (TextView) findViewById(R.id.tv_up);
            tv_down = (TextView) findViewById(R.id.tv_down);
            ck_right = (CheckBox) findViewById(R.id.ck_right);
            //在初始化的时候设置这个值
            tv_up.setText(up);
        }
        //设置顶部文字
        public void setUp(String text){
            tv_up.setText(text);
        }
        //设置底部文字
        public void setDown(String text){
            tv_down.setText(text);
        }
        //是否被选中
        public boolean isChecked(){
            return ck_right.isChecked();
        }
        //设置选择状态
        public void setChecked(boolean b){
            if(b){
                ck_right.setChecked(b);
                tv_down.setText(down_on);
            }else{
                ck_right.setChecked(b);
                tv_down.setText(down_off);
            }
        }
        
    
    }
  • 相关阅读:
    软件工程实践2019第四次作业
    软件工程实践2019第三次作业
    C语言第九次博客作业---指针
    基于open cv的人脸检测功能 (大自然的搬运工)
    STM32F103RCT6驱动AD7705(cubeide)
    python-tips
    在树莓派上使用DS18B02,并将数据打印在oled上
    数据库基础1
    转载:Why machine learning algorithms are hard to tune and how to fix it
    论文笔记(7)-"Local Newton: Reducing Communication Bottleneck for Distributed Learning"
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/5001494.html
Copyright © 2020-2023  润新知