2013-06-07 2 views
3

У меня есть относительная компоновка с двумя элементами. Один из них скрыт. Нечто подобное (упрощено для примера)Отсутствие событий касания после изменения видимости

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

    <ImageView 
     android:id="@+id/fullscreenimage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <AbsoluteLayout 
     android:id="@+id/layout_overlay" 
     android:layout_width="200dp" 
     android:layout_height="100dp" 
     android:layout_centerInParent="true" 
     android:visibility="gone" > 

     <ImageView 
      android:id="@+id/imageView_option1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_x="0dp" 
      android:layout_y="0dp" 
      android:src="@drawable/image1" 
      android:tag="1" /> 

     <ImageView 
      android:id="@+id/imageView_option2" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_x="100dp" 
      android:layout_y="0dp" 
      android:src="@drawable/image2" 
      android:tag="2" /> 
    </AbsoluteLayout> 
</RelativeLayout> 

После обнаружения длительного нажатия (и не поднимая палец) на всем экране изображения, которое я хочу, чтобы показать эти варианты и выберите вариант, который находится под пальцем пользователя. Я изменяю видимость макета наложения, но touchListeners на изображениях параметров никогда не вызывают. Пробовал возвращать false из touchlistener полноэкранного изображения, которое называется все время, но прослушиватель на изображении опции никогда не вызывается.

+0

Что в вашем коде Java ... – Amsheer

+0

для каждого optionView я называюсь seOnTouchLIstener и setOnHoverListener к моему реализованному экземпляру класса. Затем при длинном нажатии я делаю: mViewOverlay.visibility (VISISBLE); , но ни один из исполнителей для optionviews не называется –

+0

без кода невозможно понять waht's going on – Blackbelt

ответ

0

ImageViews обычно не доступны для кликов и не запускают onClickListeners, если вы их явно не задали.

Добавить

android:clickable="true" 
android:enabled="true" 

им.

+0

Мне не нужны клики. Мне нужен TouchListener. Я надеялся, что после изменения видимости я получаю onTouch с типом события MOVE на теперь видимом виде, который появился под моим пальцем и имеет два вида внутри. Или на тех изображениях внутри. Я не хочу поднимать палец. Просто держите его некоторое время, покажите меню, перейдите в правую опцию, а затем отпустите. –

+0

О, верно! Я не думаю, что изменение видимости во время касания переместит событие вниз по иерархии на видимое представление, как вы уже нашли. Я бы реализовал прозрачный сенсорный слой, который превосходит все и использует его в качестве контроллера. –

+0

Я видел это как слишком сложное, потому что основное изображение имеет панорамирование и масштабирование при приближении к i, поэтому делегирование всех этих элементов будет немного накладным. Вот почему я попробовал onTouch или onHover .. возможно, не меняя видимость, прозрачность может помочь. –

0

Вы должны изменить атрибут clickable, как говорит Кен Вольф.

layout_overlay.setClickable (ложь)

+0

Параметр setg onClickListener автоматически переключается на true. Посмотрите в источник просмотра. –