Imageview对齐问题

时间:2017-01-04 17:02:30

标签: android android-layout imageview android-relativelayout

我想用图像视图和相对布局来实现我的布局,如图所示。

enter image description here

我尝试使用此代码但不起作用。

<RelativeLayout
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textview_ratting"
    android:layout_margin="5dp">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageView"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_centerHorizontal="true"
        android:src="@drawable/icon"/>
</RelativeLayout>

7 个答案:

答案 0 :(得分:6)

这对我有用...提供负paddingTop等于imageview大小的一半。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_marginTop="70dp"
            android:background="@color/colorAccent" />
        <ImageView
            android:id="@+id/widget_title_icon"
            android:paddingTop="-70dp"
            android:layout_width="140dp"
            android:layout_height="140dp"
            android:layout_gravity="top|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/action_settings"
            android:scaleType="fitStart"
            android:src="@mipmap/ic_launcher" />
</FrameLayout>

this is the image screenshot

答案 1 :(得分:1)

我们通常在这种情况下使用 FrameLayout

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="192dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="100dp"
        android:background="@color/colorAccent"/>

    <ImageView
        android:id="@+id/widget_title_icon"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="top|center_horizontal"
        android:adjustViewBounds="true"
        android:scaleType="fitStart"
        android:src="@mipmap/ic_launcher"/>
</FrameLayout>

我们也可以根据你的喜好使用 android:paddingTop =“ - 10dp”

请参阅FrameLayout定义:

  

子视图以堆栈形式绘制,包含最近添加的子视图   在顶部。

希望这会有所帮助....

答案 2 :(得分:0)

android:layout_marginTop="-35dp" -35dp是图像大小的一半(70dp / 2)但反方向的边距因此使用&#34; - &#34;登录。

<RelativeLayout
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textview_ratting"
    android:layout_margin="5dp">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageView"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="-35dp"
        android:src="@drawable/icon"/>
</RelativeLayout>

答案 3 :(得分:0)

使用FrameLayout,使用frameLayout就可以了。

答案 4 :(得分:0)

为此,您应该使用FrameLayoutFrameLayout提供了一个分层布局,以重叠UI中的项目。例如:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_gravity="center|center_horizontal"
        android:background="@color/colorAccent" />
    <ImageView
        android:id="@+id/widget_title_icon"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_marginBottom="100dp"
        android:layout_gravity="center|center_horizontal"
        android:src="@mipmap/ic_launcher" />
</FrameLayout>

Arpan已经提出了类似的答案。他正在使用两个元素的填充和边距,而这个使用布局重力和ImageView的相对边距。这样做总是将内容放在所有设备的屏幕中央。

ImageView(android:layout_marginBottom) = 0.5 * RelativeLayout(android:layout_height)

答案 5 :(得分:0)

请使用作为的孩子。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 xmlns:app="http://schemas.android.com/apk/res-auto"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:layout_marginBottom="0dp"
                android:paddingBottom="0dp"
                android:paddingTop="0dp">
</RelativeLayout>

 <de.hdodenhof.circleimageview.CircleImageView
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/cir_img_ptv"
                android:layout_width="@dimen/cir_img_diameter_ptv"
                android:layout_height="@dimen/cir_img_diameter_ptv"
                android:layout_gravity="center|top"
                android:layout_marginTop="@dimen/cir_img_top_margin_ptv"
                android:scaleType="centerCrop"
                android:src="@drawable/profile_user"
                app:civ_border_color="@color/white"
                app:civ_border_width="@dimen/cir_img_stroke_ptv"
                app:civ_fill_color="@color/white"
                app:civ_border_overlay="true"/>

 </FrameLayout>

答案 6 :(得分:-2)

试试这段代码,

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relCustomerEditProfile"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerVertical="true"
    android:layout_marginTop="100dp">

    <LinearLayout
        android:id="@+id/linRoot"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="50dp"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/relHeader"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <RelativeLayout
                android:id="@+id/imgBackground"
                android:layout_width="wrap_content"
                android:layout_height="90dp"
                android:layout_alignBottom="@+id/relProfile"
                android:layout_centerHorizontal="true"
                android:background="@drawable/bg_black"></RelativeLayout>

            <RelativeLayout
                android:id="@+id/relProfile"
                android:layout_width="110dp"
                android:layout_height="110dp"
                android:layout_centerHorizontal="true">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/imgViewProfilePhoto"
                    android:layout_width="90dp"
                    android:layout_height="100dp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="40dp"
                    android:background="@drawable/red"></de.hdodenhof.circleimageview.CircleImageView>

            </RelativeLayout>
        </RelativeLayout>

    </LinearLayout>
</RelativeLayout>

特此,我附上截图,

enter image description here

希望,它可以帮助你!!