В точности то, что сказал Тукан, но для дальнейшего уточнения (ограничения комментариев слишком короткие):
Проблема заключается в том, что Gallery
не позволяет пользователю прокручиваться, если в нем нет детей.эта позиция еще.scrollToChild()
является виновником при попытке ввести событие:
private boolean scrollToChild(int childPosition) {
View child = getChildAt(childPosition);
if (child != null) {
int distance = getCenterOfGallery() - getCenterOfView(child);
mFlingRunnable.startUsingDistance(distance);
return true;
}
return false;
}
Интересно, что если вы бросите галерею пальцами, это приведет к созданию ребенка.Затем, если вы отпустите палец (возвращаясь к исходному положению) и , затем нажмите кнопку, которая активирует инъекцию onKeyDown
, , она будет работать без сбоев - потому чтотам есть ребенок.
К сожалению, нет реального решения, поскольку в этом классе все приватно.Единственное решение - использовать setSpacing(-1)
или что-то в галерее, поэтому левый и правый дочерние элементы всегда создаются и видны, но прямо за выбранным в данный момент видом.
В качестве сноски я действительно озадаченпочему все закрыто в этом классе (или в любом другом классе виджетов Android в этом отношении).Это одна из тех вещей, которую можно легко исправить с помощью небольшого изменения кода.
Редактировать (август 2012 г.): Для дальнейшего использования, а не пытаться использовать Галерею для такого родашаблон (когда вы хотите, чтобы пользователь проводил между различными элементами, пока виден только один из них), гораздо лучше использовать ViewPager
в пакете совместимости Android *1023* класс .На мой взгляд, пакет совместимости отмечен не так хорошо, как следовало бы (мне потребовалось некоторое время, чтобы заметить это).Для разработчиков, ориентированных на Android 2.x +, это находка.