我在我的应用程序中使用 QuickContactBadge,它运行良好。
但是,徽章在右下角显示了一个小的叠加层。我想它在那里表明它是一张QuickContactBadge
图片,而不仅仅是一张图片。我对此完全没问题,但是,由于我Holo.Light
在我的应用程序中使用,联系人徽章显示为黑色覆盖。例如,在带有 的股票拨号器中Holo.Dark
,覆盖层很浅。
我理解这样做的原因,但是在大多数联系人照片上,深色叠加层很难看,而浅色叠加层对大多数人都有效。
那么,我怎样才能覆盖覆盖,并强制徽章显示光(即 for Holo.Dark
)覆盖?
查看 Android 源代码QuickContactBadge
,Drawable
覆盖层的mOverlay
, 是私有的,因此无法从我的应用程序直接访问。在Drawable
构造函数中设置:
public QuickContactBadge(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray styledAttributes = mContext.obtainStyledAttributes(R.styleable.Theme);
mOverlay = styledAttributes.getDrawable(
com.android.internal.R.styleable.Theme_quickContactBadgeOverlay);
styledAttributes.recycle();
mQueryHandler = new QueryHandler(mContext.getContentResolver());
setOnClickListener(this);
}
我假设我必须扩展整个QuickContactBadge
类来解决这个问题,但我对 Android 和 Java 都很陌生,所以我不知道如何做到这一点。我之前已经扩展ListAdapter
了 s,但是当我尝试扩展这个徽章时,我遇到了必须访问内部 Android 资源的问题,而我不能。
我能想到的另一个解决方案是“欺骗”我正在使用的徽章,Holo.Dark
但我不知道该怎么做。
有没有人做过类似的事情,或者至少可以为我指明正确的方向?