【问题标题】:ImageView can't be positioned in the right place in the LayoutImageView 无法定位在 Layout 中的正确位置
【发布时间】:2016-01-18 12:39:53
【问题描述】:

我想制作一个购物车图像,右上角有一个小指示器,显示选择/订购了多少产品。 问题是,我不能把它放在右上角,只能放在左边(默认)或中心。

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

【问题讨论】:

    标签: android android-layout android-imageview android-relativelayout


    【解决方案1】:

    通过使用 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>
    

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

    【讨论】:

    • 您知道如何更改indicatorIcon (根据订单)上的数字文本吗?我必须在顶部使用 TextView 吗?或者只是将文本添加到 ImageView 本身可以工作?
    【解决方案2】:

    您可以将此代码添加到您的 ImageView 标记中。

    android:layout_marginLeft="90dp"
    

    它将使 ImageView 向右 marginLeft 给出一个空白,具体取决于您想要的大小。您可以根据需要更改大小。

    【讨论】:

      【解决方案3】:

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

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

      在您的 "@+id/indicatorIcon" 上。

      希望对你有帮助。

      【讨论】:

        【解决方案4】:
        <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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-26
          • 2020-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多