相对布局9补丁被取代

时间:2014-01-23 11:35:57

标签: android android-layout relativelayout nine-patch

这是我的问题 Screenshot on Android

我想将左侧的白色箭头定位到右侧红色括号所示布局的中间位置。

箭头是9个补丁图像

9-patch image

<?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="match_parent"
        >
        <FrameLayout 
            android:id="@+id/camera_preview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
        ></FrameLayout>
    </RelativeLayout>

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

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/camera_eyes" />

    </RelativeLayout>

    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        >
        <TextView
            android:id="@+id/camera_countdown_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="200sp"
            android:textColor="#FFFFFF"
            android:text="@null"
            ></TextView>
    </RelativeLayout>

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <Button
            android:id="@+id/camera_button"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@null"
            android:text="@null"
            ></Button>
    </RelativeLayout>

    <RelativeLayout 
        android:id="@+id/camera_editor"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible"
        android:background="#000000"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
            <FrameLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                >
                <RelativeLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    >
                    <ImageView 
                        android:id="@+id/camera_editor_preview"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                    />
                </RelativeLayout>

                <RelativeLayout 
                    android:id="@+id/camera_editor_left_arrow"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="left|center_vertical"
                    android:background="@drawable/cam_edit_left_arrow"
                    >
                </RelativeLayout>
            </FrameLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal"
                android:layout_weight="5"
                >
                <Button
                    android:id="@+id/camera_editor_btn_ok"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Crop"
                    ></Button>
                <Button 
                    android:id="@+id/camera_editor_btn_no"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Cancel"
                    />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>

</FrameLayout>

在屏幕截图中,可以看到ID为“camera_editor”的RelativeLayout(覆盖前4个RelativeLayouts。)

“camera_editor”相对布局包含垂直LinearLayout。 上半部分用于显示图像,4个边框用于裁剪。它的内容被限制在一个FrameLayout中,layout_weight = 1。 下半部分包含2个按钮。它的内容被限制在一个LinearLayout中,layout_weight = 5。

有关的白色箭头是上部FrameLayout中RelativeLayout的背景。 RelativeLayout初始化为layout_height =“match_parent”(希望FrameLayout的高度)和重力左,但箭头没有出现在中间。

P.S。顶部的红色条是Action Bar。一切都在片段中发生。

图形布局高亮左箭头 The graphic layout high-lighting the left arrow

所有箭头的位置都被移位 showing all 4 displaced arrows

1 个答案:

答案 0 :(得分:0)

我的9补丁图像甚至是X偶像。我将它们切换到奇数X奇数px,现在它们按预期拉伸,所有箭头都定位在四边的LinearLayouts中间。

即使这张图片也能正确拉伸!!!!!

a working odd x odd px 9-patch image

P.S。我只将图像放在drawable-mdpi中,然后在HTC ONE SV(分辨率800 x 480像素4.3“)和HTC Sensation XE(分辨率540 x 960像素4.3”)上运行应用程序。你认为这与资源的位置有关吗?