精华内容
参与话题
问答
  • 自定义android进度条,带有进度指示,项目详情:http://blog.csdn.net/xiaanming/article/details/10298163
  • JS获取元素属性和自定义属性

    万次阅读 2017-09-14 10:19:02
    获取元素的属性分为两种类型:1-获取元素常见的属性(class,id,type,value……)2-获取自定义的元素的属性(data-value,data-mess…….)获取元素的属性,设置元素的属性: 1-原生JS** 设置属性 .setAttribute(...

    昨天有同事问我,怎么获取自定义元素的属性,我意识到这个确实是个 问题,所有总结一下自己的心得。

    获取元素的属性分为两种类型:


    1-获取元素常见的属性(class,id,type,value…)

    2-获取自定义的元素的属性(data-value,data-mess…)


    获取元素的属性,设置元素的属性:

    1-原生JS

           设置属性 .setAttribute("属性","值")
           获取属性 .getAttribute("属性")
    

    2-jquery

           设置属性 .attr("属性","值")
           获取属性 .attr("属性")
    

    下面通过一个例子介绍一下,如何获取和设置元素的属性;

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
         
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>获取元素属性</title>
            <style>
                * {
                    margin:0;
                    padding:0;
                    list-style:none;
                }
            </style>
        </head>
         
        <body>
            <div id="mayouchen">
                <div style="background:red;height:20px">元素属性获取</div>
                <div class="test1">
                    <p id="demo">点击按钮来设置按钮的 type,id,class 属性。</p>
                    <input value="OK" class="mayouchen">
                    <button onclick="mayouchen1()">获取元素属性</button>
                </div>
                <div style="background:green;height:20px">自定义属性获取</div>
                <div class="test2">
                    <div id="tree" data-leaves="47" data-plant-height="2.4m">我是被获取的元素</div>
                    <button onclick="mayouchen2()">获取自定义元素属性</button>
                </div>
            </div>
            <script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script>
            <script>
                $(function() {
     
                });
     
                function mayouchen1() {
                    document.getElementsByTagName("INPUT")[0].setAttribute("type", "button");
                    document.getElementsByTagName("INPUT")[0].setAttribute("class", "mayouchen");
                    document.getElementsByTagName("INPUT")[0].setAttribute("id", "test1");
     
                    document.getElementsByTagName("INPUT")[0].getAttribute("id");
                    document.getElementsByTagName("INPUT")[0].getAttribute("class");
     
                    console.log("id=====" + document.getElementsByTagName("INPUT")[0].getAttribute("id"));
                    console.log("class=====" + document.getElementsByTagName("INPUT")[0].getAttribute("class"));
                }
     
                function mayouchen2() {
                    var tree = document.getElementById("tree");
                    //getAttribute()取值属性
                    console.log("data-leaves======" + tree.getAttribute("data-leaves"));
                    console.log("data-plant-height===============" + tree.getAttribute("data-plant-height"));
     
                    //setAttribute()赋值属性
                    tree.setAttribute("data-come", "49");
     
                    //data-前缀属性可以在JS中通过dataset取值,更加方便
                    console.log("通过dataset获得data-leaves====" + tree.dataset.leaves);
                    console.log("通过dataset获得data-plant-height====" + tree.dataset.plantHeight);
     
                    //注意在这里连字符的访问时,属性要写成驼峰形式
                }
            </script>
        </body>
     
    </html>
    

    上面有两个test, test1是测试元素常见属性,test2是测试元素自定义属性

    展开全文
  • Android 深入理解Android中的自定义属性

    万次阅读 多人点赞 2015-04-13 10:42:00
    对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中CustomView使用自定义的属性...

    转载请标明出处:
    http://blog.csdn.net/lmj623565791/article/details/45022631
    本文出自:【张鸿洋的博客】

    1、引言

    对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现:

    1. 自定义一个CustomView(extends View )类
    2. 编写values/attrs.xml,在其中编写styleable和item等标签元素
    3. 在布局文件中CustomView使用自定义的属性(注意namespace)
    4. 在CustomView的构造方法中通过TypedArray获取

    ps:如果你对上述几个步骤不熟悉,建议先熟悉下,再继续~

    那么,我有几个问题:

    • 以上步骤是如何奏效的?
    • styleable 的含义是什么?可以不写嘛?我自定义属性,我声明属性就好了,为什么一定要写个styleable呢?
    • 如果系统中已经有了语义比较明确的属性,我可以直接使用嘛?
    • 构造方法中的有个参数叫做AttributeSet
      (eg: MyTextView(Context context, AttributeSet attrs) )这个参数看名字就知道包含的是参数的数组,那么我能不能通过它去获取我的自定义属性呢?
    • TypedArray是什么鬼?从哪冒出来的,就要我去使用?

    恩,针对这几个问题,大家可以考虑下,如何回答呢?还是说:老子会背上述4个步骤就够了~~

    2、常见的例子

    接下来通过例子来回答上述问题,问题的回答顺序不定~~大家先看一个常见的例子,即上述几个步骤的代码化。

    • 自定义属性的声明文件
        <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <declare-styleable name="test">
            <attr name="text" format="string" />
            <attr name="testAttr" format="integer" />
        </declare-styleable>
    
    </resources>
    • 自定义View类
    package com.example.test;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.View;
    
    public class MyTextView extends View {
    
        private static final String TAG = MyTextView.class.getSimpleName();
    
        public MyTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
    
            TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.test);
    
            String text = ta.getString(R.styleable.test_testAttr);
            int textAttr = ta.getInteger(R.styleable.test_text, -1);
    
            Log.e(TAG, "text = " + text + " , textAttr = " + textAttr);
    
            ta.recycle();
        }
    
    }
    • 布局文件中使用
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:zhy="http://schemas.android.com/apk/res/com.example.test"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <com.example.test.MyTextView
            android:layout_width="100dp"
            android:layout_height="200dp"
            zhy:testAttr="520"
            zhy:text="helloworld" />
    
    </RelativeLayout>

    ok,大家花3s扫一下,运行结果为:

     MyTextView: text = helloworld , textAttr = 520

    应该都不意外吧,注意下,我的styleable的name写的是test,所以说这里并不要求一定是自定义View的名字。

    3、AttributeSet与TypedArray

    下面考虑:

    构造方法中的有个参数叫做AttributeSet(eg: MyTextView(Context context, AttributeSet attrs) )这个参数看名字就知道包含的是参数的集合,那么我能不能通过它去获取我的自定义属性呢?

    首先AttributeSet中的确保存的是该View声明的所有的属性,并且外面的确可以通过它去获取(自定义的)属性,怎么做呢?
    其实看下AttributeSet的方法就明白了,下面看代码。

    public MyTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
    
            int count = attrs.getAttributeCount();
            for (int i = 0; i < count; i++) {
                String attrName = attrs.getAttributeName(i);
                String attrVal = attrs.getAttributeValue(i);
                Log.e(TAG, "attrName = " + attrName + " , attrVal = " + attrVal);
            }
    
            // ==>use typedarray ...
    
        }
    

    输出:

    MyTextView(4136): attrName = layout_width , attrVal = 100.0dip
    MyTextView(4136): attrName = layout_height , attrVal = 200.0dip
    MyTextView(4136): attrName = text , attrVal = helloworld
    MyTextView(4136): attrName = testAttr , attrVal = 520
    

    结合上面的布局文件,你发现了什么?
    我擦,果然很神奇,真的获得所有的属性,恩,没错,通过AttributeSet可以获得布局文件中定义的所有属性的key和value(还有一些方法,自己去尝试),那么是不是说TypedArray这个鬼可以抛弃了呢?答案是:NO!

    现在关注下一个问题:

    TypedArray是什么鬼?从哪冒出来的,就要我去使用?

    我们简单修改下,布局文件中的MyTextView的属性。

    <com.example.test.MyTextView
            android:layout_width="@dimen/dp100"
            android:layout_height="@dimen/dp200"
            zhy:testAttr="520"
            zhy:text="@string/hello_world" />

    现在再次运行的结果是:

    MyTextView(4692): attrName = layout_width , attrVal = @2131165234
    MyTextView(4692): attrName = layout_height , attrVal = @2131165235
    MyTextView(4692): attrName = text , attrVal = @2131361809
    MyTextView(4692): attrName = testAttr , attrVal = 520
    >>use typedarray
    MyTextView(4692): text = Hello world! , textAttr = 520

    发现了什么?通过AttributeSet获取的值,如果是引用都变成了@+数字的字符串。你说,这玩意你能看懂么?那么你看看最后一行使用TypedArray获取的值,是不是瞬间明白了什么。

    TypedArray其实是用来简化我们的工作的,比如上例,如果布局中的属性的值是引用类型(比如:@dimen/dp100),如果使用AttributeSet去获得最终的像素值,那么需要第一步拿到id,第二步再去解析id。而TypedArray正是帮我们简化了这个过程。

    贴一下:如果通过AttributeSet获取最终的像素值的过程:

    int widthDimensionId =  attrs.getAttributeResourceValue(0, -1);
            Log.e(TAG, "layout_width= "+getResources().getDimension(widthDimensionId));
    

    ok,现在别人问你TypedArray存在的意义,你就可以告诉他了。

    4、declare-styleable

    我们已经解决了两个问题,接下来,我们看看布局文件,我们有一个属性叫做:zhy:text
    总所周知,系统提供了一个属性叫做:android:text,那么我觉得直接使用android:text更nice,这样的话,考虑问题:

    如果系统中已经有了语义比较明确的属性,我可以直接使用嘛?

    答案是可以的,怎么做呢?
    直接在attrs.xml中使用android:text属性。

        <declare-styleable name="test">
            <attr name="android:text" />
            <attr name="testAttr" format="integer" />
        </declare-styleable>

    注意,这里我们是使用已经定义好的属性,不需要去添加format属性(注意声明和使用的区别,差别就是有没有format)。
    然后在类中这么获取:ta.getString(R.styleable.test_android_text);布局文件中直接android:text="@string/hello_world"即可。

    这里提一下,系统中定义的属性,其实和我们自定义属性的方式类似,你可以在sdk/platforms/android-xx/data/res/values该目录下看到系统中定义的属性。然后你可以在系统提供的View(eg:TextView)的构造方法中发现TypedArray获取属性的代码(自己去看一下)。

    ok,接下来,我在想,既然declare-styleable这个标签的name都能随便写,这么随意的话,那么考虑问题:

    styleable 的含义是什么?可以不写嘛?我自定义属性,我声明属性就好了,为什么一定要写个styleable呢?

    其实的确是可以不写的,怎么做呢?

    • 首先删除declare-styleable的标签

    那么现在的attrs.xml为:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <attr name="testAttr" format="integer" />
    </resources>

    哟西,so清爽~
    * MyTextView实现

    package com.example.test;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.View;
    
    public class MyTextView extends View {
    
        private static final String TAG = MyTextView.class.getSimpleName();
    
        private static final int[] mAttr = { android.R.attr.text, R.attr.testAttr };
        private static final int ATTR_ANDROID_TEXT = 0;
        private static final int ATTR_TESTATTR = 1;
    
        public MyTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
    
            // ==>use typedarray
            TypedArray ta = context.obtainStyledAttributes(attrs, mAttr);
    
            String text = ta.getString(ATTR_ANDROID_TEXT);
            int textAttr = ta.getInteger(ATTR_TESTATTR, -1);
            //输出 text = Hello world! , textAttr = 520
            Log.e(TAG, "text = " + text + " , textAttr = " + textAttr);
    
            ta.recycle();
        }
    
    }
    

    貌似多了些代码,可以看到我们声明了一个int数组,数组中的元素就是我们想要获取的attr的id。并且我们根据元素的在数组中的位置,定义了一些整形的常量代表其下标,然后通过TypedArray进行获取。
    可以看到,我们原本的:

    R.styleable.test => mAttr
    R.styleable.test_text => ATTR_ANDROID_TEXT(0)
    R.styleable.test_testAttr => ATTR_TESTATTR(1)

    那么其实呢?android在其内部也会这么做,按照传统的写法,它会在R.java生成如下代码:

    public static final class attr {
        public static final int testAttr=0x7f0100a9;
        }
    public static final class styleable {
         public static final int test_android_text = 0;
         public static final int test_testAttr = 1;
          public static final int[] test = {
                0x0101014f, 0x7f0100a9
            };
        }

    ok,根据上述你应该发现了什么。styleale的出现系统可以为我们完成很多常量(int[]数组,下标常量)等的编写,简化我们的开发工作(想想如果一堆属性,自己编写常量,你得写成什么样的代码)。那么大家肯定还知道declare-styleable的name属性,一般情况下写的都是我们自定义View的类名。主要为了直观的表达,该declare-styleable的属性,都是改View所用的。

    其实了解该原理是有用的,详见:Android 自定义控件 优雅实现元素间的分割线

    ok,现在5个问题,回答了4个,第一个问题:

    自定义属性的几个步骤是如何奏效的?

    恩,上述以及基本涵盖了这个问题的答案,大家自己总结,所以:略。

    总结下今天的博客。

    • attrs.xml里面的declare-styleable以及item,android会根据其在R.java中生成一些常量方便我们使用(aapt干的),本质上,我们可以不声明declare-styleable仅仅声明所需的属性即可。
    • 我们在View的构造方法中,可以通过AttributeSet去获得自定义属性的值,但是比较麻烦,而TypedArray可以很方便的便于我们去获取。
    • 我们在自定义View的时候,可以使用系统已经定义的属性。

    近期的更新计划:自定义View的一些细节相关的Blog(重点会在交互上),Android最佳实践相关的文章,framework相关的一些文章,敬请期待。

    群号:423372824

    微信公众号:hongyangAndroid
    (欢迎关注,第一时间推送博文信息)
    1422600516_2905.jpg

    展开全文
  • 自定义属性应用-自定义属性行转列

    千次阅读 2014-10-27 09:21:29
    通过sql case when对商品表自定义属性进行查询,实现行专列效果。

    通过sql case when对商品表自定义属性进行查询,实现行专列效果。

    declare @sql varchar(8000)
    
    set @sql='select StyleNo'
    
    select @sql=@sql+','+[A_GoodsAttr].AttrName+'=isnull(max(case AttrName when '''+[A_GoodsAttr].AttrName+''' then AttrValue end),0)'
    
     from A_GoodsAttr order by AttrId 
    
    set @sql=@sql+' from A_ProAttrList where  1=1 and StyleNo=''100010'' group by StyleNo order by StyleNo'
    
    print @sql
    
    
    
    
    exec(@sql)

    1、全部商品自定义属性



    2、单货号自定义属性



    展开全文
  • 动态设置自定义属性 <div class='title'> </div> <script> $('.title').click(function(){ $(this).attr('data-id',1); }) </script> 获取自定义属性 <div class="title" data...

    动态设置自定义属性

    <div class='title'>
    </div>
    <script>
        $('.title').click(function(){
              $(this).attr('data-id',1);
        })
    </script>

     

    获取自定义属性

    <div class="title" data-id=2>
    </div>
    
    <script>
        $('.title').click(function(){
            alert($(this).attr('data-id'));
        })
    </script>

     

    展开全文
  • Q_PROPERTY(自定义属性 READ 读取自定义属性函数 WRITE 设置自定义属性函数) 2.声明和定义 变量和函数. (添加了宏和函数Qtcreator就会自己处理,把属性显示到编辑器右侧属性列表中) 示例代码: #ifndef TEMPCTRL_...
  • 自定义属性的定义与获取,看了hyman老师的Android制作微信6.0界面,以及Android制作的QQ5.0侧滑菜单,深有感触,感觉学到了不少的东西,两个项目里面都运用到了android属性的定义与获取,所以想在CSDN博客中做下总结...
  • 自定义View以及自定义属性

    千次阅读 2016-12-10 14:33:10
    Android自定义View以及自定义属性
  • vue.js获取data-*自定义属性值 e.srcElement.dataset.idx e.srcElement.dataset.idx,inx是自定义属性名,也许用的到
  • 请问怎么给它添加自定义属性? 请大佬解释详细一下,VB新手有很多不懂,感谢! ![图片说明](https://img-ask.csdn.net/upload/201801/16/1516092326_458912.png) ![图片说明]...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • &lt;style&gt; .dvv { width: 100px; height: 50px; background-color: green; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;input type="......
  • 转载请标明出处: ... 本文出自:【openXu的博客】 [TOC] 在上一篇博客《Android自定义View(一、初体验)》中我们体验了自定义控件的基本流程: ... 自定义属性 重写onMeasure方法测量宽高 重写onDraw方法
  • “用户自定义属性ID和自定义属性值不能一一匹配!”,然后我点击产品右侧的“下载标准信息” ,然后点击保存,从新上传就提示“成功”!       希望能帮助需要的朋友们!    有问题可以给我发微博 ,或者 MSN ...
  • Android自定义控件及自定义属性

    千次阅读 2015-10-23 14:06:39
    Android自定义控件及自定义属性自定义控件创建自定义控件 自定义一个类,继承View 继承View还是哪个类,取决于你要实现一个什么样的控件 如果你要实现的是一个线性布局的组合控件,就可以继承LinearLayout ...
  • Android自定义控件之自定义属性 一、自定义控件步骤 1.自定义属性 2.重写onMeasure 3.重写onLayout 4.重写onDraw 今天这篇博客主要介绍第一步自定义属性,通过一个案例来进行讲解 案例的效果如下 即我们通过自定义...
  • 自定义View自定义属性

    万次阅读 2012-04-27 12:06:26
    在Android开发中常常需要自定义View,在自定义View后,常常需要一些特别的属性,这里一并讲解如何自定义属性。 1.自定义一个View类:MyNewElement.java package com.ixgsoft.space; import android....
  • 如何自定义属性 在res/values/attr.xml文件中添加&lt;declare-stylable&gt;标签,在该标签中添加自定义属性 在xml布局中为属性指定值 运行时检索属性值 将检索到的属性值应用于视图 示例: 1、为了自定...
  • Jquery 获取自定义属性 注意 h5操作的是DOM, 设置属性后可以直接显示,但内存中是不变的,而是新开内存 Jquery 操作ode是内存,是直接修改内存自定义属性 ...
  • 因为我的客户很多,每家客户都有自己的自定义属性字段,所以1不采用;2、3我进行了百万级数据的测试,查询速度都不是很好,所以想问一下有没有更好的方式来解决这个问题?或者2、3有哪些方向可以优化?
  • 自定义样式属性的使用 自定义样式属性一般是使用在自定义UI控件中,自定义样式属性用来扩展UI控件的样式属性。 使用三步曲如下: 1.声明:自定义样式属性 2.使用:在layout文件使自定义控件时,设置自定义样式...
  • 跟着我左手右手一个慢动作,打开编辑器 =&gt; 创建html文件 写入以下代码 css 样式表结构 :root{--base-color: red;} .container{ color: var(--base-color);...效果:页面中, 具有.container样式...
  • SpringBoot自定义属性乱码

    千次阅读 2018-04-27 18:16:29
    当在application.properties的配置文件中有中文时,读取出来的是乱码。需要进行下面一些操作。 原则:约定优越配置,统一所有编码为utf-8 1、修改开发工具的编码为utf-8,如我的idea编码配置, ...
  • select自定义属性

    千次阅读 2016-04-20 22:06:56
    select自定义属性值1、问题背景 下拉框可以传递值和内容,不过有时为了传值,还需要连带其他的值也一起传过来;如果用title属性,鼠标移到下拉框上方会显示出来,这样就会导致被暴露出来。所以,为了安全和传值方便...
  • react给组件,元素设置自定义属性

    万次阅读 2019-06-30 19:27:58
    给元素或者组件设置自定义属性一般以‘data-’开头,后面的可以取个独特的名字,比如说我想给img表情加一个自定义的id属性,那么react可以写成如下的样式: <div> <div onClick={(event) => { alert...

空空如也

1 2 3 4 5 ... 20
收藏数 58,811
精华内容 23,524
关键字:

自定义属性