xml的Android开发问题和imageview的定位

时间:2014-02-28 20:56:21

标签: android xml android-linearlayout relativelayout

Android开发新手在这里!创建一个基于足球的游戏,带有一个开始按钮,一个可点击的球形图像,然后是3个目标,以瞄准屏幕布局的顶部。我的XML定位存在两个问题。首先,3个目标放在彼此的顶部,而不是在中心目标的右侧/左侧。其次,球形图像直接位于目标下方,但我希望球和目标之间有一个很大的空间来瞄准,我该如何创造空间呢?

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:background="@color/green"
android:orientation="vertical" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="80dp" >

    <ImageView
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:contentDescription="@string/target1"
        android:src="@drawable/t1_box" />

    <ImageView
        android:id="@+id/t2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/target2"
        android:layout_alignParentLeft="true"
        android:src="@drawable/t2_box" />

    <ImageView
        android:id="@+id/t3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/target3"
        android:layout_alignParentRight="true"
        android:src="@drawable/t3_box" />
</RelativeLayout>

<ImageView
    android:id="@+id/football_only"
    android:layout_width="90dp"
    android:layout_height="50dp"
    android:layout_gravity="center_horizontal"
    android:contentDescription="@string/football_only"
    android:src="@drawable/blue_football"
    android:clickable="true" />

<Button
    android:id="@+id/startCountdownButton"
    android:layout_width="82dp"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="35dp"
    android:text="@string/start" />

</LinearLayout>  

更新:

<?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:background="@color/green"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:contentDescription="@string/target1"
        android:src="@drawable/t1_box" />

    <ImageView
        android:id="@+id/t2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="40dp"
        android:contentDescription="@string/target2"
        android:src="@drawable/t2_box" />

    <ImageView
        android:id="@+id/t3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="40dp"
        android:contentDescription="@string/target3"
        android:src="@drawable/t3_box" />
</LinearLayout>

<ImageView
    android:id="@+id/football_only"
    android:layout_width="90dp"
    android:layout_height="50dp"
    android:layout_gravity="center_horizontal"
    android:clickable="true"
    android:contentDescription="@string/football_only"
    android:src="@drawable/blue_football" />

<Button
    android:id="@+id/startCountdownButton"
    android:layout_width="82dp"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="35dp"
    android:text="@string/start" />

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

  

3个目标彼此重叠,而不是中心目标的右侧/左侧。

这是因为他们的父级是RelativeLayout,所以默认情况下它们位于父级的左上角。您可以使用android:layout_alightToRightOf="@id/someid"等属性。但您可能只想将RelativeLayout更改为LinearLayout,然后将它们从左到右放置。

  

其次,球形图像直接位于目标下方,但我希望球和目标之间有一个很大的空间来瞄准,我该如何创造空间呢?

您可以在它们之间添加一个空<View>来添加空格,并为其提供所需的height。您也可以在球上使用margin或保留ViewGroup的{​​{1}}。

这样的东西
ImageView

答案 1 :(得分:0)

您可以使用以下属性:

 android:layout_toRightOf="@id/t1"

 android:layout_toLeftOf="@id/t1"

将这些特定图像对齐到中间图像的左侧或右侧。

请注意,为此您需要RelativeLayout