【发布时间】:2013-11-07 14:09:46
【问题描述】:
从我的previous 帖子继续,我能够为MultiAutoCompleteTextView 设置多个元素,但我无法像链接图片中那样使用自定义背景和关闭按钮来包装这些项目。
我能够对单个元素执行相同的操作,但对于多个元素,运气不佳。
这是我尝试过的。
//将文本设置为MultiAutoCompleteTextView
private void setTextSample(String contactName) {
final SpannableStringBuilder sb = new SpannableStringBuilder();
TextView tv = (TextView) LayoutInflater.from(this).inflate(R.layout.textview, null);
tv.setText(contactName);
BitmapDrawable bd = (BitmapDrawable) convertViewToDrawable(tv);
bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());
sb.append(contactName + ",");
sb.setSpan(new ImageSpan(bd), sb.length()-(contactName.length()+1),
sb.length()-1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mMultiAutoCompleteTextView.setText(sb);
}
// 用自定义元素换行
private static Object convertViewToDrawable(View view) {
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
view.measure(spec, spec);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
c.translate(-view.getScrollX(), -view.getScrollY());
view.draw(c);
view.setDrawingCacheEnabled(true);
Bitmap cacheBmp = view.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);
view.destroyDrawingCache();
return new BitmapDrawable(viewBmp);
}
非常感谢任何帮助。
编辑:
如果我这样做
mMultiAutoCompleteTextView.setText(mMultiAutoCompleteTextView.getText().toString()+", "+sb);
我收到多个文本,但它们没有用自定义背景包裹。 没有找到我要去的地方。
编辑:
示例多个元素看起来像这样
【问题讨论】:
-
十字按钮?什么十字按钮?
-
我的意思是关闭按钮,用作删除项目的指示器
-
如果你这样写mMultiAutoCompleteTextView.setText(sb);,它可以工作吗?
标签: android canvas bitmap custom-controls autocompletetextview