Java 带文本的圆形QuickContactBadge
我有一个带有Java 带文本的圆形QuickContactBadge,java,android,quickcontactbadge,Java,Android,Quickcontactbadge,我有一个带有QuickContactBadge和联系人姓名的listview。问题是徽章是正方形的,如果联系人没有图像,那么它就是空白的。我想要一张圆形的照片,或者只是像android棒棒糖一样的联系人的首字母: 我试图解决这个问题,但没能奏效。也许我只是执行错了?这就是我所拥有的: ContactsTab.java: public class ContactsTab extends ListFragment implements LoaderCallbacks<Cursor> {
QuickContactBadge
和联系人姓名的listview
。问题是徽章是正方形的,如果联系人没有图像,那么它就是空白的。我想要一张圆形的照片,或者只是像android棒棒糖一样的联系人的首字母:
我试图解决这个问题,但没能奏效。也许我只是执行错了?这就是我所拥有的:
ContactsTab.java:
public class ContactsTab extends ListFragment implements LoaderCallbacks<Cursor> {
private CustomAdapter mAdapter;
private Cursor mCursor;
private String currentQuery;
private int mIdColumn;
private int mLookupKeyColumn;
private Uri mContactUri;
private QuickContactBadge mBadge;
private static final String[] PROJECTION = {
Contacts._ID,
Contacts.DISPLAY_NAME_PRIMARY,
Contacts.LOOKUP_KEY,
Contacts.PHOTO_THUMBNAIL_URI,
Contacts.HAS_PHONE_NUMBER,
};
private static final String[] FROM = { Contacts.PHOTO_THUMBNAIL_URI, Contacts.DISPLAY_NAME_PRIMARY };
private static final int[] TO = { R.id.badge, R.id.contact_text };
private static final String SELECTION = "(" + Contacts.IN_VISIBLE_GROUP + " = 1) AND (" + Contacts.HAS_PHONE_NUMBER + " != 0 )";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new CustomAdapter(getActivity(), R.layout.contacts_list_item, null, FROM, TO, 0)
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
setListAdapter(mAdapter);
getLoaderManager().initLoader(0, null, this);
getListView().setDivider(null);
getListView().setDividerHeight(0);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Uri contentUri = Contacts.CONTENT_URI;
return new CursorLoader(getActivity(),
contentUri,
PROJECTION,
SELECTION,
null,
Contacts.DISPLAY_NAME_PRIMARY + " ASC");
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.swapCursor(null);
}
}
创建一个自定义的可绘制图形,您就可以这样做 文件:drawable/contact_badge_round.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<size android:width="32dp" android:height="32dp"/>
<gradient android:centerColor="#123456"
android:startColor="#123456"
android:endColor="#123456"
/>
</shape>
然后在布局中创建一个按钮,并将背景设置为contact_badge_round
<Button
android:id="@+id/roundContact"
android:layout_width="32dp"
android:layout_height="32dp"
android:text="A"
android:gravity="center"
android:background="@drawable/background_new_entity_symbol"
/>
干杯 一个
QuickContactBadge
是由
在xml中声明的,但我仍然尝试将android:background
设置为我的drawable,它将backgound设置为没有缩略图的联系人,但它不会裁剪联系人的大小。还有,我该如何设置文本?我尝试了同样的方法,但没有找到解决方案。所以我尝试了这种对所有平台都是同质的定制方式。
<Button
android:id="@+id/roundContact"
android:layout_width="32dp"
android:layout_height="32dp"
android:text="A"
android:gravity="center"
android:background="@drawable/background_new_entity_symbol"
/>