Jon*_*nik 0 android border android-layout android-imageview
我正在寻找一种最简单,最可靠的方法来为一个元素添加一个瘦(1dp)边框 - 在这种情况下ImageView- 在API级别14+上.
根据我的理解,图层列表是执行此类操作的方法.
那么,我有什么:
<ImageView
android:id="@+id/overlay_main_character"
android:layout_height="72dp"
android:layout_width="72dp"
android:background="@drawable/image_border"
/>
Run Code Online (Sandbox Code Playgroud)
在Java中,ImageView设置为显示此200x200像素图像 (Wikimedia Commons).
并在res/drawable/image_border.xml:
<!-- Adds thin (1dp) border, and nothing else. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle" >
<stroke android:width="1dp" android:color="#FF000000" />
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding android:top="1dp" />
<padding android:bottom="1dp" />
<padding android:left="1dp" />
<padding android:right="1dp" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
它在测试设备上的样子(Galaxy Note,Android 4.1.2):

左边和底边缺失.
我究竟做错了什么?我的图层列表方法是否不正确(或者可以简化)?或者这可以使用除图层列表以外的其他东西来实现吗?
您可以为您设置背景颜色ImageView并将填充设置为1dp:
<ImageView
android:id="@+id/overlay_main_character"
android:layout_height="72dp"
android:layout_width="72dp"
android:background="#F000"
android:padding="1dp"
/>
Run Code Online (Sandbox Code Playgroud)
它看起来像你想要的.