На самом деле у меня есть экран, в котором root является ScrollableView
, но когда пользователь входит впервые, я должен показать «всплывающую подсказку». Проблема в том, что мне нужно показать изображение, «закрепленное» в нижней части окна с градиентом на заднем плане.
Так вот в чем проблема. Мне нужно знать, где разместить этот вид, потому что это будет зависеть от размера экрана.
Для достижения этой цели я имею вид:
XML-файл
<ScrollView>
<ConstraintLayout>
....
<FrameLayout
android:id="@+id/first_open_tooltip"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/gradient_white_transp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/mini_marker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="100dp"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_bg_tooltip_marker"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/discover_new_tooltip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_tooltip"
app:layout_constraintBottom_toTopOf="@id/mini_marker"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:layout_width="224dp"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:fontFamily="@font/montserrat_bold"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="@string/firstopen_tooltip"
android:textColor="#ffffff"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="@id/tooltip"
app:layout_constraintEnd_toEndOf="@id/tooltip"
app:layout_constraintStart_toStartOf="@id/tooltip" />
</android.support.constraint.ConstraintLayout>
</FrameLayout>
</ConstraintLayout>
</ScrollView>
При этом во фрагменте я проверяю, является ли пользователь впервые.
Если это так, тогда я изменяю LayoutParams для FrameLayout, чтобы он помещался на экране:
val display = activity!!.windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val height = size.y
var lp = discover_first_open_tooltip.layoutParams
lp.height = height //<--problem
first_open_tooltip.layoutParams = lp
Задача
Итак, вот где у меня проблема, потому что я получаю полную высоту экрана, а затем подсказка прячется, потому что внизу.
Есть ли способ просто получить "видимую область" (на картинке)?