Diseño de material: cómo establecer transparencia para el botón de acción flotante de Android
Mi pregunta está relacionada con ésta .
Cuando abro el NavigationDrawer, el botón flotante está en la parte superior de él pero tiene que estar abajo.
- Cómo establecer el comportamiento de comprobación compartida en todos los grupos en NavigationView?
- Cómo diseñar o diseñar correctamente un cajón de navegación de Android
- Cómo cambiar la fuente de navegación Encabezado de cajón y ScrollingActivity?
- Añadir 2 listview en el cajón de navegación, sólo uno funciona
- ¿Cómo superar este elemento de relleno en el cajón de navegación?
Trato de hacerlo así:
@Override public void onDrawerSlide(View drawerView, float slideOffset) { Log.i(TAG , " inner onDrawerSlide"); super.onDrawerSlide(drawerView, slideOffset); fabButton.setAlpha(25); float alpha = 0.2f; AlphaAnimation alphaUp = new AlphaAnimation(alpha, alpha); alphaUp.setFillAfter(true); fabButton.startAnimation(alphaUp); syncState(); }
Y así:
@Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerClosed(view); invalidateOptionsMenu(); fabButton.setAlpha(255); syncState(); }
Nada funcionó para mí. Cual puede ser la solución ?
Mi diseño:
<mobapply.freightexchange.customviews.FragmentNavigationDrawer xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:orientation="vertical"> <!-- The ActionBar --> <include layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- The main content view --> <FrameLayout android:id="@+id/flContent" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <!-- The navigation drawer --> <ListView android:id="@+id/lvDrawer" android:layout_width="match_parent" android:divider="@null" android:dividerHeight="0dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:background="#FFFFFF" android:cacheColorHint="@android:color/transparent" />
FragmentNavigationDrawer es la costumbre DrawerLayout
- Adición de una imagen grande a un cajón de navegación (SlidingMenu libs) - ¿Cómo?
- Uso del cajón de navegación en Android más antiguo
- Desenfocar el fondo del cajón de navegación
- No se puede agregar pestañas dentro de Fragmento de cajón de navegación Android
- Cajón de navegación coexistente y diseño de panel deslizante
- Android UiAutomatorViewer no puede detectar algunas vistas
- Cambiar elementos de NavigationView cuando el usuario está registrado
- Androide. ¿Cómo puedo deslizar NavigationDrawer de la biblioteca de pruebas Espresso?
Desde la documentación de Android de setAlpha (float alpha) (desde la API 11):
Establece la opacidad de la vista. Este es un valor de 0 a 1, donde 0 significa que la vista es completamente transparente y 1 significa que la vista es completamente opaca.
Usted está intentando fijarla al valor 25
o 255
🙂
Esto debería ocultarlo con una animación agradable:
public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); invalidateOptionsMenu(); fabButton.setAlpha(1 - slideOffset); syncState(); }
O bien, podría deslizarlo fuera de vista:
public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); invalidateOptionsMenu(); fabButton.setTranslationX(slideOffset * 100); syncState(); }
Si la posición del fab es problema entonces lo hace draggable. Aquí está el código para eso
private FloatingActionButton fab; float dX; float dY; int lastAction; fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnTouchListener(this); @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: dX = view.getX() - event.getRawX(); dY = view.getY() - event.getRawY(); lastAction = MotionEvent.ACTION_DOWN; break; case MotionEvent.ACTION_MOVE: view.setY(event.getRawY() + dY); view.setX(event.getRawX() + dX); lastAction = MotionEvent.ACTION_MOVE; break; case MotionEvent.ACTION_UP: if (lastAction == MotionEvent.ACTION_DOWN) { Intent intent = new Intent(Main.this, Cart.class); startActivity(intent); Toast.makeText(this, "Clicked!", Toast.LENGTH_SHORT).show(); } break; default: return false; } return true; }
Tengo que trabajar con esta línea de código, pero puede tener un problema con el cambio en la orientación del dispositivo.
public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); fab.setAlpha(1-slideOffset); }
- ¿Cómo publicar una biblioteca de Android como un artefacto Maven en Bitbucket?
- Android Studio preDexDebug después de agregar jar archivo