Android布局 - 映像视图集中在屏幕上,但没有显示任何内容(无需突出显示)
题
如果我将图像视图设置为可单击且可集中的,它可以正常工作,但是我无法判断哪个图像是专注的。如何使其在视图周围绘制橙色边框的最佳方法是什么?
我尝试将其放在线上层上,并设置为可集中的和可单击的,但没有任何运气。即使我在上面贴上边距,也没有什么可指示它已被选中的。
解决方案
您可以将带有选择器的可绘图用作背景。
例如,我在res/drawable中有gallery_image_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true">
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="#E6E4E0"/>
<stroke android:width="3dp" android:color="#F9C11E"/>
<padding android:left="3dp"
android:top="3dp"
android:right="3dp"
android:bottom="3dp" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#E6E4E0"/>
<stroke android:width="3dp" android:color="#F9C11E"/>
<padding android:left="3dp"
android:top="3dp"
android:right="3dp"
android:bottom="3dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#E6E4E0"/>
<stroke android:width="3dp" android:color="#FFF"/>
<padding android:left="3dp"
android:top="3dp"
android:right="3dp"
android:bottom="3dp" />
</shape>
</item>
</selector>
这将在图像周围创建三个不同的3DP线。它们是可见的,因为填充迫使图像在稍小的区域呈现。
在这样的代码中使用:
image.setBackgroundResource(R.drawable.gallery_image_bg)
其他提示
快速解决方案是使用侦听器,该侦听器将响应点击,并在ImageView上设置橙色边框...
imageView.setOnClickListener(listener)
但是,您必须为所有图像视图项目做到这一点。至少他们可以共享相同的听众。
长期解决方案是实现您自己的视图,扩展ImageView,该图像响应单击而绘制自己的橙色边框。
我假设您希望它像无线电按钮一样工作,单击imageView会从先前选择的ImageView中删除边框?因此,您将需要共享的侦听器来维护对当前选择的ImageView的引用,然后在单击新的ImageView时可以“删除”。
延迟答案,但您也可以将图层用于图像源。然后,您不必弄乱背景,填充等。
LayerDrawable d = new LayerDrawable(new Drawable[]{new BitmapDrawable(myBmp), getResources().getDrawable(R.drawable.my_selector_list)});
imageView.setImageDrawable(d);
不隶属于 StackOverflow