android - floatingactionbutton - floating action button size
Mover el botón de acción flotante hacia arriba y hacia abajo para evitar que una barra de snack lo bloquee (5)
Estoy usando esta biblioteca para implementar una barra de acción flotante y parece que no puedo encontrar una manera de mover el botón cuando aparece una barra de aperitivos en la pantalla. ¿Es incluso posible con esa biblioteca?
A cualquiera que busque respuesta en el futuro.
El diseño del coordinador utilizado como diseño principal del botón de acción flotante manejará el efecto de animación automáticamente.
El botón de acción flotante tiene un comportamiento predeterminado que detecta las vistas de Snackbar que se agregan y anima el botón por encima de la altura del Snackbar en consecuencia.
Comportamiento del botón de acción flotante
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/clayout">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:src="@drawable/filter_icon"
app:rippleColor="@color/colorGray"
app:fabSize="normal"
app:borderWidth="0dp"/>
</android.support.design.widget.CoordinatorLayout>
Luego, nuestro código SnackBar usaría Coordinatorlayout [aquí clayout] como parentlayout como a continuación:
Snackbar.make(clayout, "Click on row to know more details", Snackbar.LENGTH_LONG)
.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
Intente usar android.support.design.widget.FloatingActionButton
y CoordinatorLayout
.
Y luego intente esto:
fabView = findViewById(R.id.floating_action_button_id);
Snackbar.make(fabView, "Hi", Snackbar.LENGTH_LONG).show()
Kotlin:
class CustomBehavior : CoordinatorLayout.Behavior<FloatingActionButton> {
....
override fun onAttachedToLayoutParams(params: CoordinatorLayout.LayoutParams) {
super.onAttachedToLayoutParams(params)
//set dodgeInsetEdges to BOTTOM so that we dodge any Snackbars
params.dodgeInsetEdges = Gravity.BOTTOM
}
.....
}
Puede cambiar a android.support.design.widget.FloatingActionButton y usar CoordinatorLayout para especificar Comportamientos para sus vistas.
CoordinatorLayout es un FrameLayout super potente.
CoordinatorLayout está destinado a dos casos de uso principales:
- Como una decoración de aplicación de alto nivel o diseño cromado.
- Como contenedor para una interacción específica con una o más vistas secundarias.
Al especificar Comportamientos para vistas secundarias de un CoordinatorLayout, puede proporcionar muchas interacciones diferentes dentro de un solo padre y esas vistas también pueden interactuar entre sí. Las clases de vista pueden especificar un comportamiento predeterminado cuando se usan como elementos secundarios de un CoordinatorLayout mediante la anotación DefaultBehavior.
Los comportamientos se pueden usar para implementar una variedad de interacciones y modificaciones de diseño adicionales que van desde los cajones y paneles deslizantes hasta los elementos y botones que se pueden deslizar y deslizar y adherirse a otros elementos a medida que se mueven y animan.
Los hijos de un CoordinatorLayout pueden tener un ancla. Esta identificación de vista debe corresponder a un descendiente arbitrario del CoordinatorLayout, pero puede no ser el propio hijo anclado o un descendiente del hijo anclado. Esto se puede usar para colocar vistas flotantes en relación con otros paneles de contenido arbitrario.
Puede utilizar para establecer parentLayout - como FAB,
Snackbar.make(parentLayout, R.string.snackbar_text,Snackbar.LENGTH_LONG).setAction(R.string.snackbar_action, myOnClickListener).show();