2012-03-23 2 views
0

Я пытаюсь складывать изображения между собой (с перекрытием 70%). Я использовал frameLayout и дал каждому элементу от 10 до 10. Он работал, но это дополнение убивает меня, когда дело касается обработки событий. Есть ли лучший способ перекрытия представлений (используйте другой макет ..etc)? Я разрабатываю для Android 2.3Укладка изображений с перекрытием

<RelativeLayout android:layout_height="fill_parent" 
android:layout_width="fill_parent" > 

    <FrameLayout  
    android:id="@+id/frameLayoutBottom"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:layout_alignParentBottom="true"  
    android:layout_centerHorizontal="true" > 
    <ImageView   
    android:id="@+id/ivBottom1"   
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"   
    android:src="@drawable/c10" />  
    <ImageView  
    android:id="@+id/ivBottom2"   
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"       
    android:paddingLeft="10dp"   
    android:src="@drawable/c11" /> 

Кстати, когда я пытаюсь маржу вместо прокладки, изображения все еще находятся на вершине Афоризм 100%

+0

Обращаясь к событиям, что означает что? нажмите события? –

+0

Да или более конкретно касаются событий – Snake

ответ

1

Создайте пользовательскую группу ViewGroup, которая отображает его дочерние элементы в onLayout. Существует немало примеров, если вы ищете «пользовательскую ViewGroup onLayout». В общем, метод коррекции OnLayout выглядит следующим образом:

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) {} 

Внутри этого метода вы хотите использовать GetChildCount() и getChildAt (индекс), чтобы получить ссылки на ваши мнения ребенка. После их использования вы можете использовать значения l, t, r и b для сравнения границ вашей ViewGroup и определения расположения макетов для детей.

Как только вы найдете детей и вычислите, где вы хотите их, вы будете использовать child.layout (l, t, r, b), чтобы поместить дочерний вид в свою новую пользовательскую группу ViewGroup.

Надеюсь, это поможет. если вы REALLY необходимо взломать это в XML, вы можете попробовать следующее:

<RelativeLayout  
android:layout_width="fill_parent"  
android:layout_height="fill_parent"> 
<ImageView 
android:id="@+id/spacer1"   
android:layout_width="10dp"   
android:layout_height="wrap_content" />   
<ImageView  
android:layout_width="wrap_content" 
android:layout_height="wrap_content"   
android:src="@drawable/whatever1" /> 
<ImageView  
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_toRightOf="id/spacer1"   
android:src="@drawable/whatever2" /> 
</RelativeLayout> 
+0

О, хорошо. это имеет смысл, однако я пытаюсь сделать это в XML-макете, а не в коде – Snake

+0

, отредактировав ответ, чтобы включить способ сделать это с помощью xml. В принципе, вы можете использовать RelativeLayout и объявить «spacer» ala днями 1px gif. – drasticp

+0

Perfect. Спасибо за ответ – Snake

2

У меня есть этот макет:

Hand of cards

Я делаю это путем переопределения FrameLayout для создания контейнера для рук и ImageView для создания карт. Тогда я могу диктовать, как они макет каким-то образом я хочу.

+0

Это именно то, что я хочу отобразить, но мне нужен указатель на некоторый код, чтобы увидеть, что вы имеете в виду. – Snake

+0

У меня нет кода на этом компьютере. Я отправлю его, когда вернусь домой. – CaseyB

+1

Пожалуйста, сделайте (и я сделаю это aceppeted ответ :) – Snake

Смежные вопросы