• Android自定义View——滑动按钮 (三)


    实现在xml中对自定义View进行属性赋值

    1)新建存放属性值xml文件,attrs.xml

    文件中添加属性名称和类型

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="ToggleView">
            <attr name="switchBackground" format="reference" />
            <attr name="slideBackground" format="reference" />
            <attr name="toggle_state" format="boolean" />
        </declare-styleable>
    </resources>

    2)在MainActivity的布局文件中对自定义的控件添加属性

    需注意在文件开头,添加命名空间,com.f.customeview为我的项目package名

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:customView="http://schemas.android.com/apk/res/com.f.customeview"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <com.f.customeview.Custome.ToggleView
            android:id="@+id/toggleBtn"
            android:layout_width="0dp"
            android:layout_height="9dp"
            android:layout_marginTop="30dp"
            app:layout_constraintTop_toBottomOf="@+id/textView1"
            customView:slideBackground="@mipmap/ic_launcher"
            customView:switchBackground="@drawable/switch_bg"
            customView:toggle_state="false"
            tools:ignore="MissingConstraints"
            tools:layout_editor_absoluteX="205dp" />

    3)在ToggleView类中第二个构造方法,获取xml中的属性,调用方法

        /**
         * 用于xml创建,可指定自定义属性
         */
        public ToggleView(Context context, AttributeSet attrs) {
            super(context, attrs);
            //获取xml中自定义的属性
            String namespace = "http://schemas.android.com/apk/res/com.f.customeview";
            int defaultValue =-1;
            int switchBackgroundResource = attrs.getAttributeResourceValue(namespace,"switchBackground",defaultValue);
            int slideButtonResource = attrs.getAttributeResourceValue(namespace,"slideBackground",defaultValue);
            boolean toggleState = attrs.getAttributeBooleanValue(namespace,"toggle_state",false);
    
            setSwitchBackgroundResource(switchBackgroundResource);
            setSlideButtonResource(slideButtonResource);
            setSwitchState(toggleState);
    
        }

    就搞定啦

  • 相关阅读:
    禅道导出的CSV文件打开为乱码的解决方法
    谈谈微信支付曝出的漏洞
    阿里云ACE深圳同城会 开始报名
    CSS 埋点统计
    How to use “svn add” recursively in Linux shell?
    Java反序列化漏洞执行命令回显实现及Exploit下载
    在线测试 ssl 安全性
    检测一下你的专业指数:2015年十大测试工具你认识几个?
    nginx用户认证配置( Basic HTTP authentication)
    FTP基础知识 FTP port(主动模式) pasv(被动模式) 及如何映射FTP
  • 原文地址:https://www.cnblogs.com/Nora-F/p/10903323.html
Copyright © 2020-2023  润新知