zoukankan      html  css  js  c++  java
  • 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);
    
        }

    就搞定啦

  • 相关阅读:
    解决ASP.NET中的各种乱码问题
    window.open不被拦截的实现代码
    window.open 浏览器差异.
    使用jQuery获取radio/checkbox组的值的代码收集
    Libnids(Library Network Intrusion Detection System) .
    基于libnids的TCP数据流的还原(多线程实现) .
    Libnids读书笔记 (转)
    PPPOE数据包转换及SharpPcap应用
    [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
    asp.net 读取word 文档的方法
  • 原文地址:https://www.cnblogs.com/Nora-F/p/10903323.html
Copyright © 2011-2022 走看看