Drawable下创建的xml文件的一些属性

Drawable下创建的xml文件的一些属性

1.shape 设置一些乍眼一看的属性,比如填充颜色,圆角样式,描边啥的



    
    
    
    
    
    
    
    



    
    
    
    

渐变和填充颜色不能同时使用。渐变可以是中心渐变,也可以起止不同的颜色来渐变,还有其他的方式

内边距是内部字体距离外部控件,此处是相对textView的距离。用的时候给控件设置一个背景,引用此文件 android:background="@drawable/shape"

2.selector设置点击选中点击效果

(1)android:state_pressed 按下和不按下的效果


    

    
    

用的时候给控件设置一个背景,引用此文件 android:background="@drawable/selector_button_pressed"

(2)android:state_checked一般表示复选框的勾选以及未勾选状态

预先在drawable目录下准备两张图片,用于表示两种状态。然后drawable目录下新建xml文件,如下



    
    
    
    


然后CheckBox控件下定义如下,通过button属性把文件引进来


(3)android:state_selected 大部分控件可以用,需要在自己代码中设置选中未选中状态

在drawable目录下设置如下文件



    
    
    
    


在ImageView控件下设置如下属性,一个背景

android:background="@drawable/selector_state_selected"

在MainActivity中添加如下图片的点击事件

final ImageView imageView=(ImageView)findViewById(R.id.imageView);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //设置状态,取反,设置取反后的状态
        imageView.setSelected(!imageView.isSelected());
    }
});

这里的叹号我之前没写,想的是反正两种状态,取不取反区别不大。但实际上设置状态是通过获取当前状态来改变的,如果没有叹号,会一直把当前状态重新设置一遍,而不是取反状态设置,所以就会出现怎么点击都不变化的状态。

3.layer-list 把item按顺序层叠显示

drawable定义xml文件




    
        
            
        
    

    
        
            
        
    

    
        
            
        
    


把textView定义如下,通过背景引用


如果把TextView宽高都设置为wrap_context,显示的效果是只有一层,里面包裹文字,而不是预想的三层形式。从网上看代码,把宽高设置一个指定的数值,比如150,三层就能完美地显现出来。这是由于

android:bottom=“50dp” android:top=“50dp” android:left=“50dp” android:right="50dp"这些属性是相对控件的距离,比如android:bottom="50dp"就是相对TextView底部边缘50dp的位置。如果控件定义的不够大,自然显示不出来。

整理自:安辉 《Android App开发从入门到精通》

你可能感兴趣的:(android)