Eu tenho um layout linear que consiste em visualização de imagem e visualização de texto, um abaixo do outro em um layout linear.
<LinearLayout android:orientation="horizontal" ... >
<ImageView
android:id="@+id/thumbnail"
android:layout_weight="0.8"
android:layout_width="0dip"
android:layout_height="fill_parent">
</ImageView>
<TextView
android:id="@+id/description"
android:layout_weight="0.2"
android:layout_width="0dip"
android:layout_height="wrap_content">
</TextView>
Algumas regras podem estar faltando, isso é para dar uma idéia de como o layout é exibido. Eu quero outra exibição de texto pequena, digamos 50dip de comprimento e largura, colocada sobre a visualização de imagem, por "sobre" eu quis dizer mais o índice z do que a visualização de imagem. Quero colocar isso, no centro e acima (sobreposição) da visualização de imagem.
Quero saber como podemos colocar uma visualização acima da outra, com diferentes índices z (de preferência em layout linear)?
fonte
Tente
.bringToFront()
:http://developer.android.com/reference/android/view/View.html#bringToFront%28%29
fonte
RelativeLayout funciona da mesma maneira, a última imagem no layout relativo vence.
fonte
Alterando a ordem do sorteio
Uma alternativa é alterar a ordem em que as vistas são desenhadas pelo pai. Você pode ativar esse recurso no ViewGroup chamando setChildrenDrawingOrderEnabled (true) e substituindo getChildDrawingOrder (int childCount, int i) .
Exemplo:
Resultado:
Ligar
OrderLayout#setDrawOrder(int)
com 0-1-2 resulta em:fonte
Você pode usar a
view.setZ(float)
partir do nível 21. da API. Aqui você pode encontrar mais informações.fonte
Compatibility: API < 21: No-op
. Então eu acho que não vai funcionarResolvi o mesmo problema adicionando
android:elevation="1dp"
a qual visualização você deseja sobre outra. Mas ele não pode ser exibido abaixo de 5.0 e terá uma pequena sombra; se você puder aceitá-lo, tudo bem.Então, disse a solução mais correta que é @kcoppock.
fonte
Tente isso em um RelativeLayout:
Funciona para mim.
fonte
Existe uma maneira de usar o LinearLayout. Apenas defina o marginTop do seu elemento anterior com o valor negativo correspondente e verifique se o elemento que você deseja no topo está após o elemento que você deseja abaixo em seu XML.
fonte
Como você não pode fazê-lo com layouts lineares, terá que optar por um RelativeLayout .
fonte
Se você estiver adicionando o modo de exibição programaticamente, poderá usar
yourLayout.addView(view, 1);
onde
1 is the index
.fonte
Eu uso isso, se você deseja que apenas uma visualização seja apresentada quando necessário:
containerView é o container de visualizações a serem classificadas, topView é a view que eu quero ter como a mais alta no container.
para que várias visualizações sejam organizadas, está prestes a usar setChildrenDrawingOrderEnabled (true) e substituindo getChildDrawingOrder (int childCount, int i) conforme mencionado acima.
fonte