我的gridView使用imageItem
显示本地存储中的图片(Picasso
)。通过单击右上角的选择图标选择图像时,图像的状态会发生变化,在选定状态下,图像的蓝色边框如下所示:
我试过这样的事情:
public void onClick(View v) {
if(!v.isSelected()){
imageItem.setBackgroundResource(R.drawable.photoborder);
}else{
imageItem.setBackgroundDrawable(null);
}
}
});
我确实在没有加载图像时看到了边框。 当毕加索完成加载图像时,边框已被覆盖:
如何在ImageView中设置图像边框? 非常感谢您的任何建议!!
以下是每个图像项的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<custome.SquaredImageView
android:id="@+id/image_item_in_gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:background="@drawable/attachment_gallery_images_items_background" />
<ImageView
android:id="@+id/imageCheckStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:padding="2dp"
android:src="@drawable/abc_ic_cab_done_holo_dark" />
</RelativeLayout>
答案 0 :(得分:3)
您的布局有2个视图; SquaredImageView
显示图片,ImageView
作为选择指标。当您为SquaredImageView
设置背景时,它会被置于SquaredImageView
后面(因为它是背景)。
您需要在View
前添加SquaredImageView
,然后在代码中修改其背景。
在XML布局中添加View
:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right">
<custome.SquaredImageView
android:id="@+id/image_item_in_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:background="@drawable/attachment_gallery_images_items_background" />
<View
android:id="@+id/imageCheckBorder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/photoborder" />
<ImageView
android:id="@+id/imageCheckStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_gravity="right"
android:layout_marginTop="2dp"
android:padding="2dp"
android:src="@drawable/abc_ic_cab_done_holo_dark" />
</FrameLayout >
然后修改代码以更改View
的背景,而不是SquaredImageView
。 (在此示例中,它的名称为imageCheckBorder
)
public void onClick(View v) {
if(!v.isSelected()){
imageCheckBorder.setBackgroundResource(R.drawable.photoborder);
}else{
imageCheckBorder.setBackgroundDrawable(null);
}
}
答案 1 :(得分:0)
您可以将border drawable用作图像视图的图层
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke
android:width="@dimen/drawable_selector_border_thickness"
android:color="#0099CC" />
<solid android:color="#500099CC" />
</shape>
答案 2 :(得分:0)
根据您的代码,您同时使用了两个不同的实例,例如imageItem.setBackgroundResource
和
imageItem.setBackgroundDrawable
您实际需要做的只是坚持使用其中一个背景实例,您就可以获得所需的结果。代码应如下所示
public void onClick(View v) {
if(!v.isSelected()){
imageItem.setBackgroundResource(R.drawable.photoborder);
}else{
imageItem.setBackgroundResource(null);
}
}
});