Я хотел бы включить ScrollView и отключить его нажатием кнопки.
Отключить означает, как если бы ScrollView не было ... и включить, он возвращает ScrollView.
Я хочу этого, потому что у меня есть галерея с текстовыми изображениями, и при нажатии кнопки ориентация экрана изменяется, поэтому в альбомной ориентации текст становится больше. И мне нужен ScrollView, чтобы изображение не растягивалось, а текст становился нечитаемым.
scrollview.Enabled=false / setVisibility(false)
ничего не делает.
XML:
<ScrollView
android:id="@+id/QuranGalleryScrollView"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<Gallery android:id="@+id/Gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="horizontal"></Gallery>
</ScrollView>
Спасибо
Edit1: я не могу использовать видимость (ушел), так как это также скроет галерею, я хочу скрыть эффект ScrollView. Когда есть ScrollView, изображения в галерее становятся прокручиваемыми и не помещаются на экране, поэтому вам нужно прокрутить, чтобы увидеть все изображение, я не хочу отключать / включать его одним нажатием кнопки.
Я пробовал это:
((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setOnTouchListener(null);
((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setHorizontalScrollBarEnabled(false);
((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setVerticalScrollBarEnabled(false);
((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setEnabled(false);
Но все же изображения в Галерее можно прокручивать и не умещать на экране .. Что с этим делать?
onTouchEvent(MotionEvent ev)
Я прошел этот путь:
источник
ListView
работает наоборот: true, когда прокрутка отключена, и false, когда она включена.Нашел это простое решение, просто установил
источник
requestDisallowInterceptTouchEvent
работает только для блокировки дочернего элемента View. Так было бы больше похожеmLinearLayout.requestDisallowInterceptTouchEvent(true);
Отключить ScrollView
источник
Для начала я использовал код, опубликованный в первом комментарии, но изменил его следующим образом:
тогда я позвонил ему таким образом
потому что я пытался
но он сказал, что setIsScrollable не определен
Я надеюсь, что это поможет вам
источник
ScrollView
основным контейнером макета вашего класса макета.Вот более простое решение. Переопределите
onTouch()
дляScrollView
OnTouchListener
и верните false, если хотите обойти прокрутку прикосновением. Программная прокрутка по-прежнему работает, и нет необходимости расширятьScrollView
класс.источник
У меня недостаточно очков, чтобы прокомментировать ответ, но я хотел сказать, что ответ mikec сработал для меня, за исключением того, что мне пришлось изменить его, чтобы вернуть! IsScrollable вот так:
источник
источник
@JosephEarl +1 У него есть отличное решение, которое отлично сработало для меня с некоторыми незначительными изменениями для программной реализации.
Вот небольшие изменения, которые я внес:
Класс LockableScrollView:
Основное занятие:
источник
У меня был макет над NestedScrollView, использующий событие касания и отключивший прокрутку:
и включить:
источник
Вы можете создать CustomScrollView, для которого вы можете отключить его взаимодействие с другими представлениями. Хотя иногда это может раздражать конечного пользователя. Используйте его с осторожностью.
Это код:
Как использовать CustomScrollView?
Вы можете добавить CustomScrollView в качестве родителя к экрану, на котором вы хотите добавить еще один Scrollview в качестве дочернего представления, и весь экран можно прокручивать. Я использовал это для RelativeLayout.
В моем случае это сработало.
источник
источник
Это помогает?
источник
Вы можете расширить галерею и использовать какой-либо флаг для отключения прокрутки, когда хотите:
источник
Как видно из документации , вы не можете установить для видимости значение false. В вашем случае вам, вероятно, следует использовать:
источник
при нажатии кнопки слушатель просто делает
так что полоса прокрутки не включается при нажатии кнопки
источник