Android,XML:gravity = top无效(截图)

时间:2018-02-28 12:12:02

标签: android android-layout

这是一个奇怪的:

我有这么简单的代码:

        <LinearLayout
            android:orientation="vertical"
            android:gravity="top"
            android:layout_gravity="top"
            android:layout_weight="600"
            android:layout_width="0dp"
            android:layout_height="match_parent">
            <ImageView
                android:layout_gravity="top"
                android:src="@drawable/button_category_adventure"
                android:id="@+id/img_userpic_recview_comments"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>

并收到此结果:

enter image description here

显然,imageview在其布局中是中心而不是在TOP上。 为什么会这样?

这是完整的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#ffffff"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="12dp" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:layout_weight="50"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
        <LinearLayout
            android:orientation="vertical"
            android:gravity="top"
            android:layout_gravity="top"
            android:layout_weight="600"
            android:layout_width="0dp"
            android:layout_height="match_parent">
            <ImageView
                android:layout_marginTop="-10dp"
                android:layout_gravity="top"
                android:src="@drawable/button_category_adventure"
                android:id="@+id/img_userpic_recview_comments"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_weight="3634"
            android:layout_width="0dp"
            android:layout_height="match_parent">
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/txt_username_recview_comments"
                    android:textColor="#000000"
                    android:text="USERNAME"
                    android:textSize="15sp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <TextView
                    android:id="@+id/txt_rankname_recview_comments"
                    android:textColor="#000000"
                    android:text="traveler"
                    android:textSize="10sp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/txt_comments_recview_comments"
                    android:textColor="#000000"
                    android:textSize="13sp"
                    android:text="Wow, that looks like it was so much fun and I don’t hate you at all for this! You look so pretty!! Right, this is actually me! HAHA! So, I guess I am the pretty one, am I not? ;D"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="2dp"
                    android:paddingBottom="2dp" />
            </LinearLayout>
            <LinearLayout
                android:orientation="horizontal"
                android:layout_weight="10"
                android:layout_width="match_parent"
                android:layout_height="0dp">
                <LinearLayout
                    android:orientation="vertical"
                    android:layout_weight="5"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">
                    <TextView
                        android:id="@+id/txt_date_recview_comments"
                        android:textColor="#000000"
                        android:text="01.01.2020"
                        android:textSize="11sp"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </LinearLayout>
                <LinearLayout
                    android:orientation="vertical"
                    android:gravity="right"
                    android:layout_weight="5"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">
                    <ImageView
                        android:id="@+id/img_dots_horizontal"
                        android:layout_gravity="center|right"
                        android:src="@drawable/general_btn_dots_horizontal"
                        android:background="@drawable/ripple"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_weight="536"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    </LinearLayout>
</LinearLayout>

                                                                                                                         Thank you all so far for the help!

3 个答案:

答案 0 :(得分:3)

尝试此操作并调整您的上边距。

<LinearLayout
    android:orientation="vertical"
    android:gravity="top"
    android:layout_gravity="top"
    android:layout_weight="600"
    android:layout_width="0dp"
    android:layout_height="match_parent">
    <ImageView
        android:layout_gravity="top"
       android:layout_marginTop="-20dp"
        android:src="@drawable/button_category_adventure"
        android:id="@+id/img_userpic_recview_comments"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

答案 1 :(得分:1)

“显然,图像视图在其布局中是中心而不是TOP。为什么会发生这种情况?”

它不是居中的,它位于顶部,就像您在XML中定义的那样。

答案 2 :(得分:0)

请注意一件事:

LinearLayout有方向vertical

儿童视图的layout_gravity可以是right, left,center,start,end。因为您已经告诉LinearLayout垂直绘制子视图,所以第一个孩子将自动位于顶部。您不必指定顶部位置。

LinearLayout有方向horizontal

子视图的layout_gravity可以是top, bottom,center

正如我在评论中提到的,对于你的问题。请在预览中查看。我确信Image位于顶部,白色区域也是该Image的一部分。