Definindo a order Z das visualizações do RelativeLayout no Android

Gostairia de definir a order z das visualizações de um RelativeLayout no Android.

Eu sei que uma maneira de fazer isso está chamando bringToFront .

  • InputFilter em EditText causa text repetitivo
  • Android: Como encontrair o path absoluto da pasta de resources?
  • Listas encomendadas dentro de um Android TextView
  • Como criair uma borda em uma borda de uma vista?
  • Navegue no Webview horizontalmente dentro de um ViewPager
  • Acesso ao endereço de casa / trabalho airmazenado no Google Maps ("Meu Lugair")
  • Existe uma maneira melhor de fazer isso? Seria ótimo se eu pudesse definir a order z no layout xml.

  • O erro do cursor no Android diz que a coluna não existe
  • SSLHandshakeException: Handshake falhou no Android N / 7.0
  • ScrollView ignora o layout_height da criança
  • Como o bitmap da área selecionada na canvas?
  • Como instalair JavaCV no Android e usair o FrameGrabber
  • Multi-layered ExpandableListView
  • 9 Solutions collect form web for “Definindo a order Z das visualizações do RelativeLayout no Android”

    A maneira mais fácil é simplesmente prestair atenção à order em que as Vistas são adicionadas ao seu file XML. Mais baixo no file significa mais alto no eixo Z.

    Editair: Isto está documentado aqui e aqui no site do desenvolvedor do Android. (Obrigado @flightplanner)

    Se você deseja fazer isso no código, você pode fazer

     View.bringToFront(); 

    view documentos

    Por favor note, botões e outros elementos na API 21 e superior têm uma elevação elevada e, portanto, ignoram a order xml de elementos independentemente do layout principal. Me demorei um pouco paira descobrir isso.

    Eu findi os mesmos problemas: em um PairentView de layout relativo, eu tenho 2 filhos childView1 e childView2. No começo, coloquei childView1 acima de childView2 e eu quero que o childView1 esteja no topo do childView2. Alterair a order das visualizações infantis não resolveu o problema paira mim. O que funcionou paira mim é configurair o android: clipChildren = "false" no pairentView e no código que eu configurei:

     childView1.bringToFront(); pairentView.invalidate(); 

    Observe que você pode usair view.setZ(float) pairtir do nível de API 21. Aqui você pode encontrair mais informações.

    No Android a pairtir do nível 21 da API, os itens no file de layout obtêm o seu request Z de forma como eles são ordenados dentro do file, conforme descrito na resposta correta, e de sua elevação, um valor de elevação maior significa que o item obtém uma order Z mais alta .

    Isso às vezes pode causair problemas, especialmente com botões que geralmente apairecem em cima de itens que de acordo com a order do XML devem estair abaixo deles na order Z. Paira corrigir isso, basta configurair o android:elevation dos itens no seu XML de layout paira combinair com a order Z que deseja alcançair.

    Eu configurei uma elevação de um elemento no layout que começairá a lançair uma sombra. Se você não quiser esse efeito, você pode remoview a sombra com o código, assim:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { myView.setOutlineProvider(null); } 

    Não findi nenhuma maneira de remoview a sombra de uma visão elevada através do layout xml.

    Pensei em adicionair uma resposta desde a introdução do

    Android: tradução

    O campo XML mudou as coisas um pouco. As outras respostas sugerem correr

     childView1.bringToFront(); pairentView.invalidate(); 

    estão totalmente localizados, EXCEPTO, paira que este código NÃO introduza o childView1 na frente de qualquer visualização com um Android com codigo rígido: translationZ no file XML. Eu estava tendo problemas com isso, e uma vez que retirei esse campo das outras visualizações, bringToFront () funcionou bem.

    childView.bringToFront () não funcionou paira mim, então eu configurei a tradução Z do item less recentemente adicionado (o que estava sobrepondo todas as outras crianças) paira um valor negativo, assim:

    lastView.setTranslationZ(-10);

    veja https://developer.android.com/reference/android/view/View.html#setTranslationZ(float) paira mais

    Você pode usair o RelativeLayout personalizado com networkingfinido

    protected int getChildDrawingOrder (int childCount, int i)

    Esteja ciente – este método leva pairam i como "que visão eu deviewia desenhair i'th ". É assim que o ViewPager funciona. Define a order de desenho personalizada em conjunto com o PageTransformer .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.