您当前的位置: 首页 >  android

命运之手

暂无认证

  • 0浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android】【自定义控件】通过DrawableState来改变ImageView状态

命运之手 发布时间:2019-04-10 21:13:08 ,浏览量:0

DrawableState存储着控件enabled,pressed,checked等状态,绘制时根据这些状态绘制出不同的图像 我们可以通过修改DrawableState来给控件添加一些本来没有的属性,比如ImageView本来是没有checked属性的 DrawableState的基础属性是不可修改的,但是我们可以指定新的属性和基础属性合并,调用getDrawableState时,就会返回合并后的DrawableState ImageView主要是通过setImageState(int[] extraStates, boolean merge)这个方法来合并属性

ImageView iv = findViewById(R.id.iv);
iv.setImageState(new int[]{android.R.attr.state_checked, android.R.attr.state_pressed}, true);
iv.setImageState(new int[]{android.R.attr.state_checked, android.R.attr.state_pressed}, false);
iv.setImageState(new int[]{}, true);
iv.setImageState(new int[]{}, false);

ImageView继承自View,基础State属性只有enabled一个 baseStates = {android.R.attr.state_enabled} 我们新添加checked和pressed两个属性 extraStates = {android.R.attr.state_checked, android.R.attr.state_pressed} setImageState的第一个参数表示追加属性,第二个参数表示是否和基类属性合并,不合并只会使用自己指定的属性 那么以上四个方法的执行结果如下:

{android.R.attr.state_enabled, android.R.attr.state_checked, android.R.attr.state_pressed}
{android.R.attr.state_checked, android.R.attr.state_pressed}
{android.R.attr.state_enabled}
{}
关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0396s