0
我使用drawable作为图像背景来给出边框,但它不能按需要工作(圆不完美)。如何为圆形图像视图绘制边框?
回收站视图项布局
<data>
<variable
name="news"
type="com.android.mvvm.model.NewsItem" />
<variable
name="clickListener"
type="com.android.common.util.RecyclerViewOnItemClickHandler"></variable>
</data>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circular_image_selected"
android:layout_width="100dp"
android:layout_height="100dp"
android:onClick="@{clickListener.onClick}"
android:src="@{news.thumb}" />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circular_image_unselected"
android:layout_width="100dp"
android:layout_height="100dp"
android:onClick="@{clickListener.onClick}"
android:src="@{news.thumb}"
android:visibility="gone" />
</FrameLayout>
适配器的onBindViewHolder方法,其中,我对项目设定背景到图像视图中选择
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof RecyclerViewHolder) {
NewsItem item = list.get(position);
RecyclerViewHolder newsViewHolder = (RecyclerViewHolder) holder;
if (item.isSelected) {
CircleImageView img = (CircleImageView) newsViewHolder.getBinding().getRoot().findViewById(R.id.circular_image_unselected);
newsViewHolder.getBinding().getRoot().findViewById(R.id.circular_image_unselected).setVisibility(View.VISIBLE);
img.setBackground(context.getResources().getDrawable(R.drawable.selected_img_bg));
} else {
CircleImageView img = (CircleImageView) newsViewHolder.getBinding().getRoot().findViewById(R.id.circular_image_selected);
img.setColorFilter(Color.argb(150, 155, 155, 155), PorterDuff.Mode.SRC_ATOP);
newsViewHolder.getBinding().getRoot().findViewById(R.id.circular_image_unselected).setVisibility(View.INVISIBLE);
}
newsViewHolder.getBinding().setVariable(BR.clickListener,
new RecyclerViewOnItemClickHandler<>(item, position, listener));
newsViewHolder.getBinding().setVariable(BR.news, item);
newsViewHolder.getBinding().executePendingBindings();
}
}
可绘制图像背景
<?xml version="1.0" encoding="utf-8"?><shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke android:color="@android:color/holo_red_dark" android:width="3dp"/>
<size
android:width="100dp"
android:height="100dp"/>
好像你的形象被溢出边界。你有没有尝试使用106作为宽度和高度?你将圆圈设置为100的大小,但是从左到右加3,所需的高度和宽度应该是106 –
@SteveMorin是的,我尝试了106dp的高度和宽度,但仍得到相同的效果。 –