实际上,我有一个屏幕,其根是一个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>
这样,我在Fragment中验证是否是用户第一次。
如果是,那么我更改FrameLayout的LayoutParams以使其适合屏幕:
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
问题
这就是我要解决的问题,因为我得到了整个屏幕的高度,然后工具提示隐藏了,因为它在底部。
有什么方法可以获取图像中的“可见区域”?
答案 0 :(得分:1)
从草图上看,工具提示似乎不在滚动平面上,而是在底部操作栏的顶部。因此,我提出了一种布局,如下所示:
<ScrollView>
<ConstraintLayout>
....
</ConstraintLayout>
</ScrollView>
<ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<PutYourToolTipHere
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<YourMenuBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ConstraintLayout>
它的目的是覆盖工具提示,而不是在滚动视图中显示。