各項目の写真を含むリスト ビューを含む Android アプリを開発しています。
QuickContact
各写真にバッジを設定しました。
android < ICS (android 4) では、画像は正しく表示されます。次に例を示します。
ただし、Android ICS 4 以上では、右下に矢印が表示されます。
この右下の矢印をクイックコンタクトバッジで非表示にすることはできますか?
各項目の写真を含むリスト ビューを含む Android アプリを開発しています。
QuickContact
各写真にバッジを設定しました。
android < ICS (android 4) では、画像は正しく表示されます。次に例を示します。
ただし、Android ICS 4 以上では、右下に矢印が表示されます。
この右下の矢印をクイックコンタクトバッジで非表示にすることはできますか?
この矢印はオーバーレイと呼ばれ、Lollipop 以上の場合、次の方法で非表示にするのが最も簡単です。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
contactBadge.setOverlay(null);
}
Lollipop 以前をサポートするために、QuickContactBadge を拡張します。
/**
* Extend the QuickContactBadge to hide the overlay.
*/
public class MyQuickContactBadge extends QuickContactBadge {
private static final String OVERLAY_FIELD_NAME = "mOverlay";
public MyQuickContactBadge(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyQuickContactBadge(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyQuickContactBadge(Context context) {
super(context);
init();
}
private void init() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
super.setOverlay(null);
return;
}
try {
// Pre-lollipop we use reflection to null the overlay drawable
Field overlayField = QuickContactBadge.class.getDeclaredField(OVERLAY_FIELD_NAME);
// setAccessible(true) prevents IllegalAccessException
overlayField.setAccessible(true);
overlayField.set(this, null);
} catch (NoSuchFieldException | IllegalAccessException e) {
// TODO: log exception
}
}
}
これは間違いではなく、仕様によるものです。QuickContactBadge の目的は、画像を表示することだけではなく、システムが認識している既存の連絡先に基づいて連絡先に連絡する方法を呼び出すためのインターフェイスを提供することでもあります。「矢印」は、画像をタップすることでより多くの情報を取得できることをユーザーに示すためにあります。それはページの曲がった角のようなものです。
本当に連絡先の写真だけを使用したい場合は、ContactsContract API を使用して自分でデータを収集する必要があると思います。
http://developer.android.com/reference/android/provider/ContactsContract.html