我有一个滚动视图,它有点长,很容易超出屏幕高度。现在位于滚动视图的底部,有一个按钮,点击该按钮我会执行一些操作。完成这些操作后,我想显示一个填充屏幕的覆盖遮罩。
OverlayLayout
<LinearLayout>
<ImageView></ImageView>
<TextView>Loading...</TextView>
</LinearLayout>
ScrollView布局显示为
<ScrollView>
<LinearLayout>Main content</LinearLayout>
</ScrollView>
我希望覆盖蒙版在ScrollView中相对于屏幕而不是父ScrollView呈现在LinearLayout的顶部。
答案 0 :(得分:3)
ScrollView只能有一个孩子。我建议做的是这个
在您的布局文件中
<FrameLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout>Main content</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/overlay_mask"
android:clickable="true"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="#80000000"
android:gravity="center"
android:visibility="gone">
<ImageView></ImageView>
<TextView>Loading...</TextView>
</LinearLayout>
</FrameLayout>
在您的代码中使用findViewById()获取LinearLayout视图,并在onClick按钮上将LinearLayout的可见性设置为VISIBLE
,当您的操作完成时,即当您需要覆盖蒙版时,只需设置LinearLayout的可见性为GONE
。 android:clickable
属性将确保在显示覆盖蒙版时它会消耗掉所有触摸事件。 android:background
属性将应用半透明的黑色叠加效果。