美文网首页Android自定义控件
android自定义带删除,全选的云标签

android自定义带删除,全选的云标签

作者: 无夜_b56f | 来源:发表于2017-10-02 19:49 被阅读0次

应公司需求要写个云标签,然后上网一搜,果然有demo,git链接AndroidTagView

效果还可以,不过呢,不满足需求,扩展性也不高,其实最重要的是代码太多,不如xml来的快.于是就进行一番改版,下面先上个图,没图也没人看了.

云标签网上也很多人写了,实现原理也不难,无非就是一个view继承ViewGroup然后拿到子控件,计算行数,子view宽度,不懂原理的可以看看源码或者看看自定义方面的资料。

上面的AndroidTagView中的Tag是一个自定义的标签,内容都是画上去的,太麻烦了,需求一变就得改源码,改参数,于是就把TagView换成了一根自定义的xml,以便于需求变化好更改,更改xml的代码如下

private void onAddTag(String text, intposition) {

if(position <0|| position >mChildViews.size()) {

return;

}

final View tagView = View.inflate(getContext(),R.layout.tag, null);

TextView      title = (TextView) tagView.findViewById(R.id.tag_name);

title.setText(text);

title.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(tagListener!=null) {

intpos =mChildViews.indexOf(tagView);

tagListener.onTagClick(pos);

}

}

});

ImageView imgDelete= (ImageView) tagView.findViewById(R.id.delete);

if(mEnableCross){

imgDelete.setVisibility(VISIBLE);

}

imgDelete.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(tagListener!=null) {

intpos =mChildViews.indexOf(tagView);

tagListener.removeTag(pos);

}

}

});

mChildViews.add(position,tagView);

if(position

for(inti = position;i

mChildViews.get(i).setTag(i);

selectMap.put(i, false);//设置全部反选

}

}else{

tagView.setTag(position);

}

addView(tagView,position);

}

看到上面的View.inflate(getContext(),R.layout.tag, null);这行了吧,目前还没有做很好的xml更换扩展,后面会做修改,本来想多贴点代码讲讲,突然发觉也没啥,都是些业务性的东西,那个标签位移的我删除了,因为一般标签的功能都用不到。好了,上demo地址,有需求的直接下载吧

云标签

相关文章

网友评论

    本文标题:android自定义带删除,全选的云标签

    本文链接:https://www.haomeiwen.com/subject/xaptyxtx.html