je suis en train d'ajouter un écouteur tactile pour FAB afin que je puisse le faire glisser où dans le FrameLayout, bien mon écoute tactile fonctionne bien mais la position par défaut du FAB arrive en haut de l'écran, je voulais que ce soit en bas à droite de l'écran.Comment configurer la FAB dans une mise en page de cadre en bas de l'écran sans utiliser l'option de gravité jeu
si je mets la gravité vers le bas, mon contact travail wont auditeur, comment obtenir dynamiquement?
ci-dessous est mon code woking
code mise en page
`` `
<FrameLayout
android:id="@+id/frame_layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="@drawable/dashboard_foreground"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
<android.support.design.widget.FloatingActionButton
android:id="@+id/dash_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/mike"
app:fabSize="normal" />
</FrameLayout>
` ``
Activité `` `
private int mTopMargin = 300;
mFab = (FloatingActionButton) findViewById(R.id.dash_fab);
FrameLayout.LayoutParams lpDraggableView = new
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
mFab.setLayoutParams(lpDraggableView);
mFab.setOnTouchListener(OnTouchToDrag);
public View.OnTouchListener OnTouchToDrag = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
FrameLayout.LayoutParams dragParam = (FrameLayout.LayoutParams) v.getLayoutParams();
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: {
if (((int) event.getRawY() - (v.getHeight() + mTopMargin)) > 0) {
dragParam.topMargin = (int) event.getRawY() - (v.getHeight() + mTopMargin);
TCLog.d("Custom", "topMargin" + ((int) event.getRawY() - (v.getHeight() + mTopMargin)));
dragParam.leftMargin = (int) event.getRawX() - (v.getWidth());
v.setLayoutParams(dragParam);
}
break;
}
case MotionEvent.ACTION_UP: {
// dragParam.height = 150;
// dragParam.width = 150;
dragParam.height = v.getHeight();
dragParam.width = v.getWidth();
dragParam.topMargin = (int) event.getRawY() - (v.getHeight() + mTopMargin);
dragParam.leftMargin = (int) event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(dragParam);
break;
}
case MotionEvent.ACTION_DOWN: {
break;
}
}
return true;
}
};
Même j'ai essayé le Seting la mise en page params dynamique, il va sortir de l'écran. `` `
DisplayMetrics displayMetrics = getBaseContext().getResources().getDisplayMetrics();
float dpHeight = displayMetrics.heightPixels ;
float dpWidth = displayMetrics.widthPixels ;
lpDraggableView.topMargin = dpHeight;
lpDraggableView.leftMargin = dpWIdth;
mFab.setLayoutParams(lpDraggableView);
` ``
vous avez essayé 'gravity' ou' layout_gravity'? –
j'ai essayé la gravité lpDraggableView.gravity = Gravity.BOTTOM; cela va mettre le FAB au fond mais je ne peux pas le faire glisser. – Uday
Quelle est la disposition racine de 'FrameLayout'? –