アプリで 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の両方にかなり慣れていないため、その方法がわかりません。以前に s を拡張ListAdapter
したことがありますが、このバッジを拡張しようとすると、内部の Android リソースにアクセスしなければならないという問題に遭遇しますが、アクセスできません。
私が考えることができる他の解決策は、使用しているバッジを「だます」ことですHolo.Dark
が、その方法がわかりません。
誰かが似たようなことをしたことがありますか、または少なくとも私を正しい方向に向けることができますか?