Android:Android中的可能错误

时间:2015-07-08 13:28:42

标签: android xml android-layout views android-relativelayout

我有两个Views我用来在屏幕上安排一些buttons。我看到结果的屏幕尺寸是横向模式中的 Moto G - 640dp * 360dp 。问题是 - buttons根据id=center_parent的视图而不是id=left_corner

的视图排列它们
 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View android:id="@+id/center_parent"
      android:layout_centerInParent="true"
      android:layout_width="0dp"
      android:layout_height="0dp"/>

   <View android:id="@+id/left_corner"
      android:layout_width="0dp"
      android:layout_height="0dp"
      android:layout_toLeftOf="@+id/center_parent"
      android:layout_marginRight="165dp"
      android:layout_above="@+id/center_parent"
      android:layout_marginBottom="150dp"
      android:layout_alignParentTop="true"/>"

   <Button android:id="@+id/btn1"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="165dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="5dp"
      android:text="1"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

   <Button android:id="@+id/btn2"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="330dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="171dp"
      android:text="2"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

    <Button android:id="@+id/btn3"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="292dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="171dp"
      android:text="3"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

    <Button android:id="@+id/btn4"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="292dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="292dp"
      android:text="4"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

</RelativeLayout>!

附件是图片它在屏幕上的显示方式。即使箭头显示使用left_corner进行测量,但情况并非如此。如果我在left_corner中将center_parent替换为buttons,同时安排结果是相同的。

The marked arrow is left_corner

我找到了另一种选择。所以替代方案不是我想要的。我很乐意学习这个的解释。

1 个答案:

答案 0 :(得分:0)

layout_marginLeftlayout_marginRight太多了。

首先删除所有边距,您将正确看到视图。然后再开始相应地添加边距。

这里你需要观察的东西很少。

layout_marginBottom将left_corner从center_parent

推得太远了

layout_marginRight正在将left_corner从center_parent推得太远 你必须决定你想让控件放在哪里并与之对齐。

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

    <View android:id="@+id/center_parent"
      android:layout_centerInParent="true"
      android:layout_width="10dp"
      android:layout_height="10dp"/>

   <View android:id="@+id/left_corner"
      android:layout_width="10dp"
      android:layout_height="10dp"
      android:layout_toLeftOf="@+id/center_parent"
      android:layout_marginRight="10dp"
      android:layout_above="@+id/center_parent"
      android:layout_marginBottom="10dp"
      android:layout_alignParentTop="true"/>"

   <Button android:id="@+id/btn1"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="10dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="0dp"
      android:text="1"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

   <Button android:id="@+id/btn2"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="10dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="20dp"
      android:text="2"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

    <Button android:id="@+id/btn3"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="10dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="40dp"
      android:text="3"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

    <Button android:id="@+id/btn4"
      android:layout_height="20dp"
      android:layout_width="20dp"
      android:padding="0dp"
      android:layout_toRightOf="@+id/left_corner"
      android:layout_marginLeft="10dp"
      android:layout_below="@+id/left_corner"
      android:layout_marginTop="60dp"
      android:text="4"
      android:textColor="@android:color/black"
      android:background="@drawable/star"/>

</RelativeLayout>

使用上面的xml,我得到了以下输出。 Preview