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);
    
        }

    就搞定啦

  • 相关阅读:
    【引用】webkit内核浏览器支持的特殊CSS样式和CSS3.0
    catalina.home catalina.base 定义 位子 位置
    gvim 启动 全屏
    Log4j 配置文件(log4j.properties)的所在路径问题(转)
    ie6 div height bug css注意点(转)
    【引用】jdbc.properties 包含多种数据库驱动链接版本
    【引用】ActionContext和ServletActionContext介绍
    【引用】在Eclipse中将java Project转换成Dynamic Web Project
    flex查询xml字段绑定DataGrid小结
    Jquery 每天记一点200972
  • 原文地址:https://www.cnblogs.com/Nora-F/p/10903323.html
Copyright © 2011-2022 走看看