【发布时间】:2019-01-02 10:38:29
【问题描述】:
实际上我有一个屏幕,根是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
问题
所以这就是我遇到问题的地方,因为我得到了全屏高度,然后工具提示隐藏在底部。
有什么方法可以获取“可见区域”(在图片中)?
【问题讨论】:
-
你试过
DisplayMetrics然后减去状态栏、导航栏和底部导航视图的高度吗? -
有什么办法可以得到这个视图的大小吗?或者通常大小相同,例如... 48dp?因为如果我没记错的话,我已经转换为 dp -> px 来设置布局参数,不是吗?
-
您无需猜测这些视图的大小(大多数情况下为 48dp)。只需运行我在运行时指出的计算。是的,你会在 PX 中需要它们。
标签: android kotlin view scrollview visible