2013-02-14 3 views
1

У меня есть ImageView внутри listview в левой большинстве position.This imageView и listView имеет все состояния (нажата, выбранный, сосредоточенный, нормальный) .Если я нажимаю ListView но не ImageView затем в некоторых устройствах вызывается состояние зависания (выбранное, сфокусированное, нажатое) ImageView. Так что я хочу знать, как этого избежать.Избегайте ImageView парения состояние внутри Listview если элемент списка нажимается

ответ

1

Ниже перечислены шаги по устранению этой проблемы. Создайте класс NoParentPressImageView со следующим кодом:

public class NoParentPressImageView extends ImageView { 

    public NoParentPressImageView(Context context) { 
     this(context, null); 
     this.setFocusable(false); 
    } 

    public NoParentPressImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.setFocusable(false); 
    } 

    @Override 
    public void setPressed(boolean pressed) { 
     // If the parent is pressed, do not set to pressed. 
     if (pressed && ((View) getParent()).isPressed()) { 
      return; 
     } 
     super.setPressed(pressed); 
    } 
} 

Обратите внимание, что setFocusable(false) в конструкторе имеет тот же эффект, что и добавление android:focusable="false" к документу xml макета. Это позволяет щелкнуть строки ListView. Метод переопределения onPressed решает проблему, которую вы упомянули здесь, а именно: события события в диапазоне ListView (родительский), колеблющийся до ImageView (дочерний элемент).

Как только вы определили этот класс, вы можете заменить ImageView на ваш макет xml с помощью com.MYCOMPANY.MYAPP.NoParentPressImageView. Скомпилируйте и запустите, и ListView теперь должен вести себя так, как вы ожидаете, при нажатии на события только нажатые события, только когда вы нажимаете на изображение, а не когда вы нажимаете в другом месте строки.

+0

Его действительно приятно. Не забудьте добавить setFocusable (false). –

-1

Постарайтесь добавить android:focusable="false" в ImageView в свой файл макета.

+1

Sory, его не работает. –

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