Я создаю приложение с игровыми карточками, и я изучаю создание пользовательского представления, у которого есть обычная карта с фронтальной и задней частью, которая когда-то была нажата, будет перевернута спереди назад.
Я использую учебник по переводу Flip3DAnimation inorder для достижения перевертывания карты спереди назад, и она отлично работает. но после работы над приложением некоторое время я увидел, что в следующей части моего приложения будет серьезная проблема, которая будет перетаскивать карту по экрану.
когда я разговаривал с JakeWharton в чате freenode этим утром, мне показалось, что я должен создать представление 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>
вот что я получаю как графический макет:
в конце концов я просто создал другой класс для обработки карт и имел макет в main.xml
чтобы представить его в основном коде операции.
В изменении 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 # с9
include
помещает дочерний xml вFrameLayout
и это то, что не влияет на включаемый xml-файл.