我使用this link和this project link来创建TagTextViews。
我对此进行了一些修改,因为每个项目只需要一个String,结果如下:
在链接的代码中,ClickableSpan
的{{1}}删除了“标记”。因此,如果您点击“标记”上的任意位置,它将删除此标记项。
我想要的是:
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:我改为:点击'标签'=做我想做的事;退格'标签'=删除方法。
很抱歉这可能造成了混乱,因为我没有包含整段代码。
答案 0 :(得分:0)
设置构造函数与X关联而不是整个窗口小部件的视图
构造: public abstract void onClick(查看小部件)
小部件需要指向x小部件,而不是标记