Intereting Posts
Import google-play-service зависимость красный крест Android Vision Barcode API – читать пользовательский QR-код с двоичными данными Запретить Android-телефон подключаться к сети Wi-Fi, если мое приложение не одобрит его? Не удается отобразить карту на Android Обработка весов inMeasue для пользовательских представлений Стилирование поставщика действия Share на Android Правильный способ инициализации Fabric.io для отладки / выпуска Включить / выключить Toast из общих настроек? В Android, можно ли перехватить ключевые события во всем мире, прежде чем они достигнут вид ребенка, который имеет фокус? Как отказаться от кода Facebook Многоэкранный дизайн Android Как отключить логарифм переноса текста в Eclipse Juno Произошел утечка объекта SQLiteConnection для базы данных! Пожалуйста, исправьте свое заявление Как установить макс. Длина текста в редакторе edittext Есть ли способ общаться с USB-устройствами на Android?

Android отключает автоматическую прокрутку в расширенном виде списка

Я использую в расширяемом списке, и когда я открываю один из элементов в списке, мой свиток автоматически фокусируется на открывшемся элементе, могу ли я запретить списку сосредоточиться на новом элементе и остаться в том же месте? Я пытаюсь удалить фокусацию из представления open, но это не сработало.

Вам нужно переопределить OnGroupClickListener и использовать событие. Это позволит избежать того, что ExpandableListView выполнит действие по умолчанию, которое, по крайней мере, при компиляции с 4.3, должно сгладитьScroll до позиции.

Вот пример реализации:

expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { if(parent.isGroupExpanded(groupPosition)){ parent.collapseGroup(groupPosition); }else{ boolean animateExpansion = false; parent.expandGroup(groupPosition,animateExpansion); } //telling the listView we have handled the group click, and don't want the default actions. return true; } }); 

Если вы потребляете событие, есть какое-то поведение по умолчанию, которое вам нужно реплицировать, если вам это нужно. Это включает в себя воспроизведение звуковых эффектов и вызов расширений / сбой-прослушивателей.

Для сравнения с поведением по умолчанию я отправлю его, взятый из исходного кода Android (4.3)

  //in ExpandableListView.java boolean handleItemClick(View v, int position, long id) { final PositionMetadata posMetadata = mConnector.getUnflattenedPos(position); id = getChildOrGroupId(posMetadata.position); boolean returnValue; if (posMetadata.position.type == ExpandableListPosition.GROUP) { /* It's a group, so handle collapsing/expanding */ /* It's a group click, so pass on event */ if (mOnGroupClickListener != null) { if (mOnGroupClickListener.onGroupClick(this, v, posMetadata.position.groupPos, id)) { posMetadata.recycle(); return true; } } if (posMetadata.isExpanded()) { /* Collapse it */ mConnector.collapseGroup(posMetadata); playSoundEffect(SoundEffectConstants.CLICK); if (mOnGroupCollapseListener != null) { mOnGroupCollapseListener.onGroupCollapse(posMetadata.position.groupPos); } } else { /* Expand it */ mConnector.expandGroup(posMetadata); playSoundEffect(SoundEffectConstants.CLICK); if (mOnGroupExpandListener != null) { mOnGroupExpandListener.onGroupExpand(posMetadata.position.groupPos); } final int groupPos = posMetadata.position.groupPos; final int groupFlatPos = posMetadata.position.flatListPos; final int shiftedGroupPosition = groupFlatPos + getHeaderViewsCount(); smoothScrollToPosition(shiftedGroupPosition + mAdapter.getChildrenCount(groupPos), shiftedGroupPosition); } returnValue = true; } else { /* It's a child, so pass on event */ if (mOnChildClickListener != null) { playSoundEffect(SoundEffectConstants.CLICK); return mOnChildClickListener.onChildClick(this, v, posMetadata.position.groupPos, posMetadata.position.childPos, id); } returnValue = false; } posMetadata.recycle(); return returnValue; }