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的高度和寬度,但仍得到相同的效果。 –