我创建了自定义视图并扩展到MultiAutoCompleteTextView并使用Span,但我有一个问题,若并没有足够的空间容纳文本和图像,那个么Span有(空间),然后视图分割它们
这是我的自定义视图代码:
public class CustomMultiAutoCompleteTextView extends MultiAutoCompleteTextView {
@Override
public void setTokenizer(Tokenizer t) {
super.setTokenizer(t);
}
public CustomMultiAutoCompleteTextView(Context context) {
super(context);
}
public CustomMultiAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomMultiAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void replaceText(CharSequence text) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.avatar);
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append("g");
builder.setSpan(new ImageSpan(getContext(), getRoundedBitmap(bitmap)),
builder.length() - 1, builder.length(), 0);
builder.append(text);
builder.setSpan(new BackgroundColorSpan(Color.GRAY), 1, builder.length(), 0);
super.replaceText(builder);
}
public static Bitmap getRoundedBitmap(Bitmap bitmap) {
final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int color = Color.RED;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
}
有人有什么建议吗?
检查这两个库:
他们在做你想做的事情。
至少第一个库背后的想法-一旦onTextChanged
发生变化,您就可以用TextView
创建一个位图,其中包含文本和设置
compoundDrawableSwithintInInsicBounds
(淹没在画布上)。
TextView textView = (TextView) lf.inflate(R.layout.chips_edittext, null);
textView.setText(c); // set text
int image = ((ChipsAdapter) getAdapter()).getImage(c);
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, image, 0);
// capture bitmapt of genreated textview
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(spec, spec);
textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
canvas.translate(-textView.getScrollX(), -textView.getScrollY());
textView.draw(canvas);
textView.setDrawingCacheEnabled(true);
Bitmap cacheBmp = textView.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);
textView.destroyDrawingCache(); // destory drawable
// create bitmap drawable for imagespan
BitmapDrawable bmpDrawable = new BitmapDrawable(viewBmp);
bmpDrawable.setBounds(0, 0,bmpDrawable.getIntrinsicWidth(),bmpDrawable.getIntrinsicHeight());
// create and set imagespan
ssb.setSpan(new ImageSpan(bmpDrawable),x ,x + c.length() , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
一旦图像名称只是一个位图——它就不能再包装了,你的问题就解决了。
在MultiAutoCompleteTextView上应用样式:问题是因为OP打算覆盖样式未声明的某些属性。这不是我的问题。 android:MultiAutoCompleteTextView风格,如gmail:这里,OP想要设置与gmail相同的风格,答案显示2 API。此外,没有显示XML代码。因此,这与我的问题和期望大不相同。 我的材质样式似乎没有应用。更准确地说,我只是想让我的(材料!)小
我试图在MultiAutocompleteTextView上应用样式,但该样式似乎未应用。 在风格上。我有以下xml(仅显示一部分): 在我的布局文件中,我有以下内容: 因为主题应用于整个应用程序,所以它也应该应用于MultiAutocompleteTextView。但当我尝试执行应用程序时,会出现以下错误:
本文向大家介绍Android中AutoCompleteTextView与MultiAutoCompleteTextView的用法,包括了Android中AutoCompleteTextView与MultiAutoCompleteTextView的用法的使用技巧和注意事项,需要的朋友参考一下 本文以实例列举了Android中AutoCompleteTextView与MultiAutoComplete
在这里,我的场景有点类似于Gmail的双因素认证。当一个用户成功登录(SMS代码发送给用户),然后用另一个页面挑战他输入SMS代码。如果用户正确地获得了SMS代码,他将被显示为安全页面(如Gmail收件箱)。
我正在寻找一个像facebook应用那样的滑动菜单,即点击左侧菜单按钮,主屏幕向右滑动,然后点击“查看全部”,在幻灯片视图屏幕上,一个新的视图从右向左滑动。
问题内容: 我想为我的一个项目添加类似gmail的文件上传功能。有人可以帮我吗? 我的应用程序是在vb.net中构建的。 我将不胜感激任何帮助或指导。 谢谢 问题答案: 请查看SWFUpload,它实际上是Flash绝对优越的文件上传处理功能的JavaScript API。最好的东西,直到浏览器终于赶上。 来自链接: 通过对话框中的ctrl / shift-select一次上传多个文件 所有事