Scala l'elemento in RecyclerView per sovrapporre 2 elementi adiacenti Android

Sto utilizzando RecyclerView con GridLayoutManager. L'objective che voglio get è quando faccio clic su un elemento, si scalerà e sovrappone gli elementi adiacenti. Proprio come l'image qui sotto (in Android TV) immettere qui la descrizione dell'immagine

Quando viene triggersto l'evento onClick, chiamo

  • ListFragment onPrepareOptionsMenu chiamato prima di onCreate. Perché e come risolvere / bypassare?
  • Il frammento non ha creato una vista
  • Firebase Auth ottiene ulteriori informazioni sull'utente (età, sesso)
  • wifi ricerca per i dispositivi connessi alla stessa networking ad es. diversa dall'access point (per android)
  • Come impostare i raggi d'angolo per il button nel codice java?
  • Notifica locale ripetuta each giorno in Android PhoneGap
  • v.animate().scaleX(1.2f).scaleY(1.2f).setDuration(500).start(); 

    Ma il risultato è sotto: immettere qui la descrizione dell'immagine

    Può sovrapporre solo gli elementi che hanno una posizione inferiore a se stessa.
    Cosa devo fare per sovrapporsi a tutti gli elementi adiacenti. Grazie in anticipo.
    EDIT
    Ho già provato:

     v.bringToFront(); 

    o

     (v.getParent()).bringChildToFront(v); 

    Ma entrambi non funzionano.

  • Quanto sono potenti i browser mobili rispetto ai desktop?
  • Aggiunta di text a ImageView in Android
  • Studio Android: UnsatisfiedLinkError: findLibrary restituito null - caricamento della libreria nativa
  • L'aggiornamento di Android SDK causa java.lang.VerifyError crash
  • Come terminare l'attività corrente in Android
  • Come utilizzare Android REGEX con le classi di pattern e matcher?
  • 4 Solutions collect form web for “Scala l'elemento in RecyclerView per sovrapporre 2 elementi adiacenti Android”

    Secondo la risposta di aga , uso ViewCompat.setElevation (Visualizza vista, float elevation) per supportre API prima di 21, Funziona come un affascinante.

     static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View root) { // bind views // ... // bind focus listener root.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { // run scale animation and make it bigger ViewCompat.setElevation(root, 1); } else { // run scale animation and make it smaller ViewCompat.setElevation(root, 0); } } }); } } 

    Il file di layout dell'articolo è molto semplice come sotto:

     <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:focusableInTouchMode="true" android:background="@drawable/sl_live_item" /> 

    1.Interrare il metodo getChildDrawingOrder.

     @Override protected int getChildDrawingOrder(int childCount, int i) { View view = getLayoutManager().getFocusedChild(); if (null == view) { return super.getChildDrawingOrder(childCount, i); } int position = indexOfChild(view); if (position < 0) { return super.getChildDrawingOrder(childCount, i); } if (i == childCount - 1) { return position; } if (i == position) { return childCount - 1; } return super.getChildDrawingOrder(childCount, i); } 

    2.RecyclerView setChildrenDrawingOrderEnabled è vero .

     setChildrenDrawingOrderEnabled(true); 

    3. Quando la vista elemento è focalizzata, invalidare il suo genitore.

     @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { v.setScaleX(1.5f); v.setScaleY(1.5f); mRecyclerView.invalidate(); } else { v.setScaleX(1.0f); v.setScaleY(1.0f); } } 

    Provare a invocare v.bringToFront() prima di eseguire l'animation.
    Se non funziona un'altra variante è utilizzare View#setElevation(float val) where val> 0. Lo svantaggio è che dovrai impostare l'elevazione a 0 quando stai deselezionando l'elemento.

    Bisogna farlo il vecchio modo che fai con i normali ViewGroups, superando l'ordine di disegni dei bambini. Questo esempio costringe la prima visualizzazione a essere sempre disegnata per ultimo – è necessario personalizzare il caso d'uso.

     public TopForcingRecyclerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setChildrenDrawingOrderEnabled(true); } @Override protected int getChildDrawingOrder(int childCount, int i) { if (i >= childCount - 1) return 0; //when asked for the last view to draw, answer ZERO else return i + 1; //when asked for the i-th view to draw, answer "the next one" } 

    Prestare attenzione a un errore.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.