我们首先来分析一下QuickContactBadge源码
在QuickContactBadge构造函数中会给mOverlay赋值
- private Drawable mOverlay;
- public QuickContactBadge(
- Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- TypedArray styledAttributes = mContext.obtainStyledAttributes(R.styleable.Theme);
- mOverlay = styledAttributes.getDrawable(
- com.android.internal.R.styleable.Theme_quickContactBadgeOverlay);
- styledAttributes.recycle();
- if (!isInEditMode()) {
- mQueryHandler = new QueryHandler(mContext.getContentResolver());
- }
- setOnClickListener(this);
- }
所以我是利用java反射机制给mOverlay赋值为空
- QuickContactBadge headImage = (QuickContactBadge)findViewById(R.id.head_image);
- //利用反射机制给QuickContactBadge.mOverlay复制为null
- try {
- Field f = headImage.getClass().getDeclaredField("mOverlay");
- f.setAccessible(true);
- f.set(headImage,null);
- } catch (Exception e) {
- e.printStackTrace();
- }
效果图如下: