如何添加1dp边框(到图像),以便它可以在所有屏幕上工作?

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):

在此输入图像描述

左边和底边缺失.

我究竟做错了什么?我的图层列表方法是否不正确(或者可以简化)?或者这可以使用除图层列表以外的其他东西来实现吗?

Ale*_*lov 5

您可以为您设置背景颜色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)

它看起来像你想要的.