android布局错误定位

时间:2015-10-07 10:19:27

标签: android xml android-layout

我无法在框架布局中得到正确的定位,我不知道为什么会如此。 我需要将exit_layout(代码片段末尾的LinearLayout)粘贴到屏幕的左上角。

XML:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/exit_layout"
        android:gravity="top|left">
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/exit_button_mode"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/ic_exit_icon"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tv_beck_to_main"
            android:textStyle="bold"
            android:layout_marginLeft="6dp"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/modes"
        android:gravity="center_vertical|center_horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tv_choose_mode"
            android:textSize="30sp"
            android:layout_marginLeft="10dp"/>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                >
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/button_beginner_mode"
                    android:background="@drawable/beginner_button"/>
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/button_advanced_mode"
                    android:background="@drawable/advanced_button"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tv_mode_beginner"
                    android:textStyle="bold"
                    android:layout_marginLeft="17dp"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tv_mode_advanced"
                    android:textStyle="bold"
                    android:layout_marginLeft="31dp"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/button_expert_mode"
                    android:background="@drawable/expert_button"/>
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/button_custom_mode"
                    android:background="@drawable/custom_button"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tv_mode_expert"
                    android:textStyle="bold"
                    android:layout_marginLeft="24dp"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tv_mode_custom"
                    android:textStyle="bold"
                    android:layout_marginLeft="48dp"/>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

屏幕截图:

enter image description here

3 个答案:

答案 0 :(得分:2)

更改第一个线性布局的高度和宽度以匹配父级:

<script>
    var numberOfFaces = 5;
    var theLeftSide = document.getElementById("leftSide");

    function getRandom(x, y) {
        return Math.floor(Math.random() * (y - x)) + x + 'px';
    };

    function generateFaces() {
      for (var i=0; i<numberOfFaces; i++) {
        var faces = document.createElement("img");
        faces.src = "smile.png";
        faces.style.top = getRandom(0, 400);
        faces.style.left = getRandom(0, 400);
        leftSide.appendChild(faces);
      };
    };

    </script>

您可能需要调整此布局中其他视图的边距,以将它们放置在所需位置。

此外,此处似乎不需要框架布局,只需使用线性布局即可实现所需的结果。

<强>更新

当问题布局发生变化时,请修改如下:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical"
    android:id="@+id/modes">

结果:

enter image description here

答案 1 :(得分:0)

确保图像顶部没有巨大空间。 还可以尝试将此行添加到ImageButton:

android:adjustViewBounds="true"

如果仍然失败,请尝试使用ImageView而不是ImageButton:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/exit_button_mode"
        android:layout_marginTop="5dp"
        android:layout_marginRight="5dp"
        android:adjustViewBounds="true"
        android:src="@drawable/ic_exit_icon"/>

答案 2 :(得分:0)

你的XML工作得很好,因为它在屏幕的左上角显示你的exit_layout。我认为问题在于你的资产。查找它们或可能导致XML显示此类视图的任何边距