我想使用 AbsoluteLayout 但它已被弃用。 所以我在上图中的蓝色 View 下方创建了一个 RelativeLayout,然后将所有内容放入 ScrollView 中,但隐藏 View 仍然位于蓝色 View “之上”,而不是在其下方。此外,屏幕滚动,但隐藏的部分只是被剪切,而是我看到了我的应用程序的默认背景..
有什么想法吗?
编辑: 我目前的尝试:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/imageView" />
<LinearLayout
android:id="@+id/centerHolder"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical" >
.....
.....
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="1000dp"
android:layout_below="@id/main_holder"
android:background="@color/black_color">
</RelativeLayout>
</RelativeLayout>
</ScrollView>
最佳答案
我是从我的一个项目中获取的,该项目显示一个 RecyclerView
,如果您单击一行,您可以在其中添加数据 - 因为单击会“打开”底部工作表。
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/rl_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.fragment.BlockFragment">
<include
android:id="@+id/ll_header"
layout="@layout/layout_header_names" />
<include
android:id="@+id/divider_header"
layout="@layout/layout_divider_horizontal"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/ll_header" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_block"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/divider_footer"
android:layout_below="@+id/divider_header" />
<include
android:id="@+id/divider_footer"
layout="@layout/layout_divider_horizontal"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#767676"
android:layout_above="@+id/ll_footer" />
<include
android:id="@+id/ll_footer"
layout="@layout/layout_footer_score"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
<!-- Here comes my bottom sheet.
It is wrapped inside a FrameLayout, because an include cannot
have a behaviour. The included layout is every layout you
can imagine - mine is a RelativeLayout with two EditTexts
for example. The layout_behaviour is the second important line. -->
<FrameLayout
android:id="@+id/container_bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#e3e3e3"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<include layout="@layout/layout_bottom_sheet"/>
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
对于行为本身,您需要获取 FrameLayout
(带有 app:layout_behavior="android.support.design.widget 的
).View
.BottomSheetBehavior"
private BottomSheetBehavior bottomSheetBehavior;
bottomSheetBehavior = BottomSheetBehavior.from((FrameLayout)findViewById(R.id.container_bottom_sheet);
//for the sheet to "peek":
bottomSheetBehavior.setPeekHeight(200);
//now you can set the states:
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
也可以设置一个 BottomSheetCallback()
,您可以在其中获取所有状态更改以及 slideOffset!
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
switch (newState) {
case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_EXPANDED:
break;
case BottomSheetBehavior.STATE_COLLAPSED:
default:
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
关于android - 从底部滚动隐藏的 View /布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990980/