Android布局 - ImageView聚焦,但屏幕上不显示任何内容(无突出显示)

Sco*_*itt 1 android focus clickable imageview focusable

如果我将我的ImageView设置为可点击和可聚焦,它可以工作,但我无法分辨哪个图像是聚焦的.让它在视图周围绘制橙色边框的最佳方法是什么,以便用户知道它目前处于焦点位置?

我尝试将它放在LinearLayout中并将其设置为可聚焦且可点击,但没有任何运气.即使我在上面留有余量,也没有任何迹象表明它已被选中.

abs*_*ent 6

您可以使用带有选择器的drawable作为背景.

例如,我在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>
Run Code Online (Sandbox Code Playgroud)

这会在图像周围创建三条不同颜色的3dp线.它们是可见的,因为填充强制图像在稍小的区域中渲染.

在代码中使用如下:

image.setBackgroundResource(R.drawable.gallery_image_bg)
Run Code Online (Sandbox Code Playgroud)