Android:在xml中选择包含View的位置

时间:2012-06-03 08:52:21

标签: android android-xml android-view

我正在构建一个带有游戏卡的应用程序,我正在研究创建一个自定义视图,该视图具有正面和背面的普通卡片,一旦点击就会从前到后翻转。

我一直在使用Flip3DAnimation tutorial教程,以实现从前到后翻转卡片,它完美无缺。但是在使用该应用程序一段时间之后,我发现我的应用程序的下一部分会出现严重问题,即将卡片拖放到屏幕上。

当我今天早上在freenode聊天中与JakeWharton交谈时,我想我应该创建一个XML视图并将其包含在main.xml中。

问题是,当我尝试移动所包含的视图时,我实现的是将图像粘在左上角。 问题:如何在父视图周围移动包含的xml?

卡片代码:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="80dp"
    android:layout_height="108dp"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/firstImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/c2" />

    <ImageView
        android:id="@+id/secondImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/back" />

</ViewFlipper>

main.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Board"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:background="@drawable/pinecropped" >

    <include
        android:id="@+id/firstCard"
        android:layout_marginRight="91dp"
        android:layout_marginTop="102dp"
        layout="@layout/card" />

</FrameLayout>

这是我得到的图形布局:

graphical layout http://oi49.tinypic.com/20fuwsh.jpg

2 个答案:

答案 0 :(得分:2)

在card.xml中更改:

<ImageView
        android:id="@+id/firstImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/c2" />

    <ImageView
        android:id="@+id/secondImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/back" />

要:

<ImageView
        android:id="@+id/firstImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/c2" />

    <ImageView
        android:id="@+id/secondImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/back" />

始终知道您可以使用工具HierarchyViewer来调试此类问题,我猜您会看到这些卡实际上占据了整个屏幕,这也就是他们将其附加到顶部的原因。

更新:

为了覆盖标签中的layout_ *属性,您必须覆盖layout_height和layout_width,请参阅此处的错误和解决方法: http://code.google.com/p/android/issues/detail?id=2863#c9

答案 1 :(得分:0)

最后我创建了一个不同的类来处理卡片,并在main.xml中设置了一个布局,以便在主要活动代码中表示它。