【问题标题】:How to make imageview properly center inside another view to make a border?如何使 imageview 在另一个视图中正确居中以制作边框?
【发布时间】:2025-12-18 06:10:01
【问题描述】:

我想要完成的只是在我的 imageview 周围创建一个 2-4dp 的小填充边框。结果(在 ADT 中看起来是正确的,但这是它在设备上的样子):

请注意,顶部有 5 px,左/右/下有 7 px 空间(这是用于 hdpi 设备)

这是我的行的 xml:

<?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:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="2dp">
    <RelativeLayout
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@android:color/white"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true">
        <ImageView
            android:src="@android:color/black"
            android:id="@+id/row_image"
            android:scaleType="centerCrop"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="4dp"
            android:layout_centerInParent="true"/>  
    </RelativeLayout>
</RelativeLayout>

我什么都试过了:Adjustviewbounds、centerCrop、wrap_content、match_parent、center、centerInside、height=46/width=46、。任何新的建议都将不胜感激,layout_gravity=center。

编辑新信息:所以我尝试删除 android:layout_alignParentRight="true" 和 android:layout_centerVertical="true" 现在填充/边距看起来正确但它没有放在右侧。

【问题讨论】:

  • 删除 android:scaleType="centerCrop"android:layout_centerInParent="true" 我认为当你有 b>match_parent
  • 是的,但会出现相同的问题,顶部填充/边距不正确。
  • @sandy 对不起,真的与问题无关。
  • @Warpzit.. 这绝对是一种解决方法..

标签: android listview layout imageview padding


【解决方案1】:

试试这个:

使用 ShapeDrawable 制作可绘制的 xml (bg.xml)。纯色白色和边框黑色。然后将其添加为 ImageView 的背景并将 ImageView 的填充设置为 2dp。这应该没问题。不需要 ReletiveLayouts..

希望这会有所帮助!

【讨论】:

  • 对于图像,这给出与上面相同的结果,对于纯色,纯色填充所有内容,忽略填充。所以还是没有解决办法。
  • 感谢您对简化布局层次结构的建议 :)
【解决方案2】:

所以罪魁祸首是 android:layout_centerVertical="true" 。不知何故,它移动了布局,使其居中不正确。

【讨论】:

    【解决方案3】:

    请检查:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="right|center_vertical" >
    
        <RelativeLayout
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@android:color/white"
            android:layout_margin="5sp"
            android:padding="5sp" >
    
            <ImageView
                android:id="@+id/row_image"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:src="@android:color/black" />
        </RelativeLayout>
    
    </RelativeLayout>
    

    希望您正在寻找这个,如果没有,那么请准确说出您想要什么。 谢谢。

    【讨论】:

    • 感谢您的建议,因为 android:layout_centerVertical="true" 已被删除(请参阅我自己的答案),因此可能也可以正常工作。
    【解决方案4】:

    你应该试试这个代码:

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:contentDescription="@string/test"
        android:padding="1dp"
        android:src="@drawable/some_photo"
        android:cropToPadding="true"
        android:scaleType="centerCrop" 
        android:background="@color/grey_border"/>
    

    【讨论】:

      最近更新 更多