diff --git a/README.md b/README.md index 9593235..81f5190 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Just use it to edit tags like EditText edit text. * Set input tag enable ```setEditable(true)``` * Add a tag ```addTag(String tagContent)``` * Remove tag: ```removeTag(String... tagValue)``` -* Set Tag data changed callback: ```setTagAddCallBack(TagAddCallback tagAddCallBack)``` and ```setTagDeletedCallback(TagDeletedCallback tagDeletedCallback)``` +* Set Tag data changed callback: ```setTagAddCallBack(TagAddCallback tagAddCallBack)```, ```setTagDeletedCallback(TagDeletedCallback tagDeletedCallback)```, and ```setTagClickCallback(TagClickCallBack tagClickCallback)``` * ⚠ When you custom input_layout layout, please use ```MEditText``` replaced ```EditText```, in order to avoid some of the soft keyboard can not receive the delete action event ### Todo diff --git a/library/src/main/java/me/originqiu/library/EditTag.java b/library/src/main/java/me/originqiu/library/EditTag.java index aafb087..fb0742a 100644 --- a/library/src/main/java/me/originqiu/library/EditTag.java +++ b/library/src/main/java/me/originqiu/library/EditTag.java @@ -68,6 +68,8 @@ public class EditTag extends FrameLayout private TagDeletedCallback tagDeletedCallback; + private TagClickCallBack tagClickCallBack; + public interface TagAddCallback { /* * Called when add a tag @@ -86,6 +88,15 @@ public interface TagDeletedCallback { void onTagDelete(String deletedTagValue); } + public interface TagClickCallBack { + + /** + * Called when tag is clicked + * @param tagValue the tag value to be send to listeners. + */ + void onTagClick(String tagValue); + } + public EditTag(Context context) { this(context, null); } @@ -192,6 +203,11 @@ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { @Override public void onClick(View view) { + + if(view instanceof TextView && view.getTag(R.id.TV_TAG_ID) != null && tagClickCallBack != null) { + tagClickCallBack.onTagClick(((TextView)view).getText().toString()); + } + if (view.getTag() == null && isEditableStatus) { // TextView tag click if (lastSelectTagView == null) { @@ -285,6 +301,7 @@ public boolean addTag(String tagContent) { defaultTagBg = tagTextView.getBackground(); } tagTextView.setOnClickListener(EditTag.this); + tagTextView.setTag(R.id.TV_TAG_ID,tagContent); if (isEditableStatus) { flowLayout.addView(tagTextView, flowLayout.getChildCount() - 1); } else { @@ -318,6 +335,10 @@ public void setTagDeletedCallback(TagDeletedCallback tagDeletedCallback) { this.tagDeletedCallback = tagDeletedCallback; } + public void setTagClickCallback(TagClickCallBack tagClickCallback) { + this.tagClickCallBack = tagClickCallback; + } + /* * Remove tag view by value * warning: this method will remove tags which has the same value diff --git a/library/src/main/res/values/tags.xml b/library/src/main/res/values/tags.xml new file mode 100644 index 0000000..70fad29 --- /dev/null +++ b/library/src/main/res/values/tags.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file