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
но я понятия не имею, как это сделать.
Кто-нибудь сделал что-то подобное или, по крайней мере, может указать мне правильное направление?
2 ответа
В SDK 21 Google добавил setOverlay(Drawable drawable)
метод.
Он принимает значение null, поэтому еще одна опция, позволяющая скрыть декоратор и сохранить функциональность QuickContactBadge:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
contactBadge.setOverlay(null);
}