首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuickContactBadge覆盖

QuickContactBadge覆盖
EN

Stack Overflow用户
提问于 2013-02-09 14:38:35
回答 2查看 779关注 0票数 2

我在我的应用程序中使用了一个QuickContactBadge,它运行得很好。

然而,徽章显示一个小的覆盖在右下角。我认为它的存在是为了表明它是一个QuickContactBadge,而不仅仅是一张图片。我完全同意这一点,然而,由于我使用的Holo.Light在我的应用程序,联系徽章显示一个黑暗的覆盖。例如,在带有Holo.Dark的股票拨号器中,覆盖层很轻。

我理解这方面的理由,但黑暗覆盖只是丑陋之上的大多数接触照片,而光覆盖工作对大多数。

那么,我如何才能覆盖覆盖层,并强制徽章显示光(即用于Holo.Dark)覆盖?

看看QuickContactBadge的安卓源代码,覆盖的DrawablemOverlay,都是私有的,因此不能直接从我的应用程序中访问。在构造函数中设置Drawable

代码语言:javascript
复制
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,但是当我试图扩展这个徽章时,我遇到了不得不访问内部Android资源的问题,而我不能。

我能想到的另一个解决方案是“欺骗”我使用Holo.Dark的徽章,但我不知道如何做到这一点。

有没有人做过类似的事情,或者至少能为我指明正确的方向?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-15 09:49:41

尝试使用ImageView而不是QuickContactBadge

票数 2
EN

Stack Overflow用户

发布于 2015-08-04 20:15:02

在SDK 21中,谷歌添加了一个setOverlay(Drawable drawable)方法。

它接受null,因此隐藏装饰器并保持QuickContactBadge功能的另一个选项是:

代码语言:javascript
复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    contactBadge.setOverlay(null);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14789194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档