我在我的應用程序中使用QuickContactBadge,它很好地工作。QuickContactBadge覆蓋
但是,徽章在右下角顯示一個小覆蓋。我想這是表明它是一個QuickContactBadge
而不僅僅是一張圖片。我對此完全沒問題,但是,由於我在我的應用程序中使用Holo.Light
,聯繫人徽章顯示黑色疊加層。例如,在Holo.Dark
的股票撥號器中,覆蓋層很輕。
我明白這樣的理由,但是在大多數聯繫照片上,黑色覆蓋層只是醜陋的,而光線覆蓋層對大多數人來說都適用。
那麼,我怎麼能覆蓋覆蓋,並強制徽章顯示光(即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
,但是當我嘗試擴展這個徽章時,我遇到了必須訪問內部Android資源的問題,而這是我無法訪問的。
我能想到的另一個解決方案是「欺騙」我正在使用的徽章Holo.Dark
,但我不知道該怎麼做。
有沒有人做過類似的事情,或者至少可以讓我指出正確的方向?
如何獲得訪問使用ImageView的聯繫徽章? – erikh 2013-03-17 17:03:54
我最終走了這條路。感謝您的建議! – erikh 2013-04-01 15:51:26