Если на кнопку наползает другой слой, можно ли сделать её некликабельной?
У меня есть кнопка close и ScrollView.
Когда кнопка находится в такой положении она должна быть кликабельной и видимой: как тут
Когда на кнопку наползает RelativeLayout она должна становиться не кликабельной и не видимой: как тут
Код:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/close"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="60dp"
android:layout_marginEnd="21dp" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:scrollbars="none">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="110dp">
<View
android:layout_width="match_parent"
android:layout_height="1420dp"
android:background="#99AAB5"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Ответы (2 шт):
Автор решения: Vlad Orlinskas
→ Ссылка
Кликабельность и видимость кнопки можно задать в коде
R.id.close.isEnabled = false
R.id.close.visibility = View.INVISIBLE
но лучше просто
R.id.close.visibility = View.GONE
Момент сближения или касания ScrollView к вашей кнопке можно получить в слушателе прокрутки.
scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// тут вам нужно сопоставить положение вашей прокрутки к положению кнопки
int scrollY = scrollView.getScrollY();
int btnBottom = R.id.close.bottom
if (scrollY > btnBottom) {
R.id.close.visibility = View.Gone
} else {
R.id.close.visibility = View.Visible
}
});
Автор решения: Dewerro
→ Ссылка
В таком случае лучше использовать NestedScrollView в паре с CollapsingToolbarLayout
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="126dp"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cyan"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<carbon.widget.RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax">
<!-- content of AppBarLayout-->
</carbon.widget.RelativeLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none"
app:layout_behavior=
"com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
<!-- content of NestedScrollView -->
</androidx.core.widget.NestedScrollView>