OnClickListener到TextView的Bubble / Tag TextView中的drawableRight

时间:2014-07-08 12:27:57

标签: android android-layout android-drawable ontouchevent onitemclicklistener

我使用this linkthis project link来创建TagTextViews。

我对此进行了一些修改,因为每个项目只需要一个String,结果如下: enter image description here

在链接的代码中,ClickableSpan的{​​{1}}删除了“标记”。因此,如果您点击“标记”上的任意位置,它将删除此标记项。

我想要的是:

  • 仅在单击X(onClick的TextView)时删除“标记”。
  • 如果单击项目本身,则执行其他操作。

以下是链接中与我的问题相关的代码部分:

custom_textview.xml:

android:drawableRight

在TagTextView.java中:

<?xml version="1.0" encoding="UTF-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/et_textview"
    ...
    android:drawableRight="@android:drawable/ic_menu_close_clear_cancel"
    ... />

我确实找到了使用BitmapDrawable bmpDrawable = getBitmapFromText(userInputString); bmpDrawable.setBounds(0, 0, bmpDrawable.getIntrinsicWidth(), bmpDrawable.getIntrinsicHeight()); ssb.setSpan(new ImageSpan(bmpDrawable), spanEnd, startIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); this.setMovementMethod(LinkMovementMethod.getInstance()); ClickableSpan clickSpan = new ClickableSpan() { @Override public void onClick(View view) { // TODO: If the tiny X is clicked on the Item: deleteString(); // TODO: else (If the item itself (so not the tiny X) is clicked): // Do something else } }; ssb.setSpan(clickSpan, spanEnd, startIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 的{​​{3}}。但由于我正在使用多个List项,而Android中没有OnTouchListener,因此我不知道如何在OnItemTouchListener中正确实现这一点。


编辑:

好吧,事实证明我犯了一个非常愚蠢的错误。 ClickableSpan#onClick()从TextView创建一个具有getBitmapFromText(String)的Bitmap。因此,代码中使用的android:drawableRight是整个“标记”。

由于现有代码在退格时也删除了Tag,我现在使用它作为删除功能,当我点击'Tag'本身时,我自己的方法。此外,我还删除了ImageSpan(bitmapDrawable),以防止与我的应用用户混淆。

TL; DR:我改为:点击'标签'=做我想做的事;退格'标签'=删除方法。

很抱歉这可能造成了混乱,因为我没有包含整段代码。

1 个答案:

答案 0 :(得分:0)

设置构造函数与X关联而不是整个窗口小部件的视图

构造: public abstract void onClick(查看小部件)

小部件需要指向x小部件,而不是标记