У меня есть диалоговое окно нижнего листа с 2 nestedscrollview
, внешний оборачивает весь вид, внутренний оборачивает один textview
, у меня есть 2 проблемы:
1. внутренний может прокручиваться только вниз, как вы можете видеть на гифке:
Мне нужно сделать внутреннюю nestedscrollview
прокручиваемой в обоих направлениях, а внешнюю nestedscrollview
прокручиваемой при перетаскивании за пределы внутреннего, как я могу это сделать?
2.
Мне нужно сделать внутренний nestedscrollview
для переноса текста, пробовал с ограничениями, но не работает, wrap_content заставляет отображать весь textview
, делая scrollview
простым textview
.
Как я могу это сделать?
Это мой XML-код:
<androidx.core.widget.NestedScrollView
android:id="@+id/outer_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewSwitcher
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.core.widget.NestedScrollView
android:id="@+id/inner_scrollview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="200dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
android:textColor="@color/white"
android:textSize="25dp"
</androidx.core.widget.NestedScrollView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</ViewSwitcher>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
проблема просто в том, что вы используете прокрутку внутри прокрутки, поэтому
Я предлагаю вам сделать текст прокручиваемым другим способом, например, сделать его только для чтения, редактировать текст android:editable="false"
или Edittext.setEnabled(false);
и играть с цветами.
или
дать достаточно места для просмотра текста
или
настроить размер текста
или вы можете сфокусироваться, когда вы нажимаете на прокрутку, например
трюк с edittext может сработать, но мне нужно надежное решение с textview, я не могу поверить, что нет способа сделать это
ViewCompat.setNestedScrollingEnabled(listRecyclerView, false);
Вы можете попробовать это, чтобы решить проблему прокрутки.
listrecyclerview что такое?
ваш recyclerView.
Я не использую там вид ресайклера, это диалоговое окно нижнего листа с двумя вложенными прокрутками внутри
После некоторых исследований и разработок на моем конце я завершил XML-макет, он работает для меня.
На самом деле проблема заключалась в неправильном проектировании макета. Возьмите последние изменения снизу.
<androidx.core.widget.NestedScrollView
android:id="@+id/outer_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewSwitcher
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.core.widget.NestedScrollView
android:id="@+id/inner_scrollview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="200dp"
android:nestedScrollingEnabled="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
android:textColor="@color/white"
android:textSize="25dp"></TextView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</ViewSwitcher>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
Примените этот макет XML и дайте мне знать, если что-то потребуется больше.
Чтобы вложенная прокрутка работала в версиях Lollipop и выше, вы должны включить ее для дочернего представления прокрутки, добавив android:nestedScrollingEnabled="true" в его XML-декларацию или явным образом вызвав setNestedScrollingEnabled(true). Итак, в наборе TextView включите это свойство.