我正在努力设置一个基于底部片段位置的上下移动的浮动按钮。 我想要谷歌地图做的事情,无论是移动底部工作表,浮动按钮也是一起移动。
此时这就是我的活动
我有一个活动可以在片段中加载地图,比如
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="br.com.vix.v1motorista.MotoristaActivity">
<!-- here the map is loaded -->
<FrameLayout
android:id="@+id/conteudo"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:layout_marginBottom="16dp"
android:visibility="visible"
app:layout_anchor="@+id/conteudo"
app:layout_anchorGravity="right|bottom"
app:srcCompat="@drawable/ic_info_white_36dp" />
<!-- Adding bottom sheet after main content -->
<include android:id="@+id/pickUpFragment" layout="@layout/fragment_pax_pick_up_2" />
我已经尝试将FloatingButton移动到Bottom Sheet Fragment xml文件,它几乎可以工作,但如果我关闭片段,浮动按钮将与底部片段一起消失,并且当浮动按钮没有完全显示时底页是“隐藏的”。
答案 0 :(得分:1)
您应该在“ android:id =“ @ + id / conteudo”” FrameLayout中添加另外两个属性:
然后在FAB中使用app:layout_dodgeInsetEdges =“ bottom”:
// give you current execution direcory
String currentDir = System.getProperty("user.dir");
String fileName = currentDir+File.separator+"src"+File.separator+"test"+File.separator
+"resources"+File.separator+"excel"+File.separator+"hello.xlsx"
// File.separator this will works for ubuntu,windows and Mac.
答案 1 :(得分:0)
你可以这样做 -
在xml的片段中
线性布局(具有透明的bg,可点击的假,方向verticale)
| - 浮动按钮(底部边距8dp)
| - 您的主要LinearLayout / RelativeLayout / FrameLayout
| - 子布局
现在计算浮动按钮的高度
设置底部的peekHeight =浮动按钮的高度+ 8dp
现在崩溃时,您的主要布局将被隐藏,但您的浮动按钮将保持可见。始终折叠你的底页不要隐藏。
如果您想展示主要布局的某些部分而不是崩溃 设置底层的peekHeight =浮动按钮的高度+该部分的高度+ 8dp
答案 2 :(得分:0)
这并不是您想要的。但是以此为基础,您可以根据需要创建自定义行为。因此,这两个组件都将适用于所提供的行为。
创建协调器布局的自定义上移行为,如下所示:
public class CustomMoveUpBehavior extends CoordinatorLayout.Behavior {
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
return dependency instanceof Snackbar.SnackbarLayout; //here you can use bottom Sheet fragment in your case
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
return true;
}
}
将浮动按钮更改为某个自定义视图,并将此行为添加为默认行为 像这样:
//it may extend floating Action button in your case
@CoordinatorLayout.DefaultBehavior(CustomMoveUpBehavior.class)
public class CustomButton extends AppCompatButton {
public CustomButton(Context context) {
super(context);
}
public CustomButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}