ImageView 无法定位在 Layout 中的正确位置

ImageView can't be positioned in the right place in the Layout

我想做一个购物车图片,在右上角有一个小指示器来显示有多少产品selected/ordered。 问题是,我不能把它放在右上角,只能放在左边(默认)或中间。

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

         <ImageView
              android:id="@+id/shoppingCartIcon"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/icon_cart" />

         <ImageView
              android:id="@+id/indicatorIcon"
              android:layout_width="10dp"
              android:layout_height="10dp"
              android:layout_gravity="top|right"
              android:src="#0066ff" />

</RelativeLayout>

您可以将这段代码添加到您的 ImageView 标签中。

android:layout_marginLeft="90dp"

它会让 ImageView 向右移动 marginLeft 给出一个空白取决于你想要的大小。您可以根据需要更改大小。

通过使用 FrameLayout,您可以为其添加一些填充和边距

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/shoppingCartIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon_cart" />

        <ImageView
            android:id="@+id/indicatorIcon"
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:layout_gravity="top|right"
            android:src="#0066ff" />

    </FrameLayout>

更新

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/shoppingCartIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon_cart" />

        <TextView
            android:id="@+id/indicatorIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top|right"
            android:layout_marginLeft="25dp"
            android:background="@drawable/circle_shape"
            android:text="5"
            android:textSize="24sp" />

    </FrameLayout>

您可以根据自己的意愿创建形状

res/drawable/circle_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#0066ff"></solid>

</shape>

除此之外,我建议您使用其他第三个库,它非常适合显示此类徽章或突出显示的视图

父级是 RelativeLayout 所以尝试使用属性 :

android:layout_alignParentRight="true"
android:layout_alignParentTop="true"

在你的 "@+id/indicatorIcon".

希望对您有所帮助。

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/shoppingCartIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon_cart" />

<ImageView
    android:id="@+id/indicatorIcon"
    android:layout_width="10dp"
    android:layout_height="10dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:src="#0066ff" />

</RelativeLayout>