@Ferdoum 和@Aditya 的答案是正确的。
但我想扩展这个答案。
您可以定义自定义视图来实现业务。
比如下面的代码:
public class CircleOnlineLayout extends FrameLayout {
private ImageView mProfileView;
private ImageView mOnlineView;
public CircleOnlineLayout(Context context) {
this(context, null);
}
public CircleOnlineLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CircleOnlineLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context, attrs);
}
private void initView(Context context, AttributeSet attrs) {
LayoutInflater.from(context).inflate(R.layout.circle_online, this);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mProfileView = (ImageView) findViewById(R.id.profile_image);
mOnlineView = (ImageView) findViewById(R.id.online_view);
}
public void setAvatarResource(int resource) {
mProfileView.setImageResource(resource);
}
public void setOnline(boolean online) {
mOnlineView.setImageResource(online ? R.color.online_color : R.color.offline_color);
}
}
circle_online.xml 是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/profile_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/ic_launcher"
app:civ_border_color="#89000000"
app:civ_border_width="1dp"
/>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/online_view"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="8dp"
android:layout_marginRight="8dp"
android:src="@android:color/holo_blue_dark"
app:civ_border_color="#FFFFFF"
app:civ_border_width="1dp"
/>
</RelativeLayout>
所以你可以使用 CircleOnlineLayout.setAvatarResource 和 CircleOnlineLayout.setOnline。当然,您可以添加其他导出api