如何在Android中为自定义字符串添加自定义形状?

时间:2015-10-24 04:47:47

标签: java android android-layout bitmap android-bitmap

我从昨天起就遇到了这个问题。我正在使用spannable string并希望为其添加类似于chips的自定义形状:

以下是我修改spannable字符串的代码:

s.setSpan(new BackgroundColorSpan(backgroundColor), currentIndex, currentIndex + words[i].length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

我尝试使用Bitmap,但根据流程,我需要根据代码将Editable转换为BitmapDrawable

BitmapDrawable bd = (BitmapDrawable) convertViewToDrawable(textView);

我面临的问题是我没有使用textView。我正在处理AutoCompleteTextView并将AutoCompleteTextView转换为Bitmap是不可能的(如果我在这里没有错)。

我怎样才能达到类似的效果?

修改-1

我使用了以下shape

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="#A6B0B8" />
<gradient android:startColor="#E5E5E6"
    android:endColor="#B4B6B7"
    android:angle="-270"/>
<corners  android:bottomRightRadius="10dp"
    android:bottomLeftRadius="10dp"
    android:topLeftRadius="10dp"
    android:topRightRadius="10dp"></corners>
</shape>

Custom Drawable

public class CustomDrawble extends DynamicDrawableSpan {

private Context mContext;

CustomDrawble(Context context){
    super();
    this.mContext = context;
}

@Override
public Drawable getDrawable() {
    Resources res = mContext.getResources();
    Drawable drawable = res.getDrawable(R.drawable.bubble);
    drawable.setBounds(0,0,100,20);
    return drawable;
}
}

申请上述Drawable时,我使用了以下代码:

 s.setSpan(new CustomDrawble(mContext), currentIndex, currentIndex + words[i].length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

从#Edit-1部分我得到了这个:

enter image description here

我在这里做错了什么?我使用Widget.SearchView而不是TextView

0 个答案:

没有答案