LinearLayout Android: Adicionar fronteira com a sombra em torno de um LinearLayout

? wawanopoulos @ | Original: StackOverFlow
---

Eu gostaria de criar o mesmo beira deste LinearLayout como exemplo :

LinearLayout Android: Adicionar fronteira com a sombra em torno de um LinearLayout

Neste exemplo, podemos ver que a fronteira não é o mesmo em todo o LinearLayout . Como posso criar esta usando um arquivo xml drawable ?

Por enquanto, eu tenho só é capaz de criar uma borda simples em todo o LinearLayout como este:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <corners
      android:radius="1dp"
      android:topRightRadius="0dp"
      android:bottomRightRadius="0dp"
      android:bottomLeftRadius="0dp" />
  <stroke
      android:width="1dp"
      android:color="#E3E3E1" />

  <solid android:color="@color/blanc" />

</shape>
---

Top 5 Responder

1Hariharan @

Try this..

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#CABBBBBB"/>
            <corners android:radius="2dp" />
        </shape>
    </item>

    <item
        android:left="0dp"
        android:right="0dp"
        android:top="0dp"
        android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white"/>
            <corners android:radius="2dp" />
        </shape>
    </item>
</layer-list>
2Der Golem @

Como alternativa, você pode usar uma imagem de 9 patch como o plano de fundo para o seu layout, permitindo mais sombras "naturais" :

LinearLayout Android: Adicionar fronteira com a sombra em torno de um LinearLayout

Result:

LinearLayout Android: Adicionar fronteira com a sombra em torno de um LinearLayout

Coloque a imagem em sua pasta /res/drawable . Certifique-se a extensão do arquivo é .9.png, não .png

By the way, esta é uma versão modificada (reduzido para o tamanho mínimo quadrado) de um recurso existente encontrado na pasta API 19 recursos SDK. Saí os marcadores vermelhos, uma vez que não parece ser nocivo, como se mostra na ferramenta draw9patch .

[EDIT]

Cerca de 9 remendos, no caso de você nunca teve nada a ver com eles.

Basta adicioná-lo como plano de fundo do seu View.

As áreas em preto marcado ( esquerda e superior ) vai esticar ( vertical, horizontal ) . As áreas em preto marcado ( direita e inferior ) definem a "área de conteúdo" ( onde é possível adicionar texto ou Views - você pode chamar as regiões não marcadas "padding ", se você gosta de ) .

Tutorial: http://radleymarx.com/blog/simple-guide-to-9-patch/

3user3619170 @

Ok, eu sei que isso é muito tarde . Mas eu tive a mesma exigência . i resolvido como este

1.Primeiro criar um arquivo xml (exemplo: border_shadow.xml ) em " drawable "     pasta e copie o código abaixo nele.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<item>
<shape>
<!-- set the shadow color here -->
<stroke 
    android:color="#7000"
    android:width="2dp" />
<!-- setting the thickness of shadow (positive value will give shadow on that side)-->
<padding
    android:bottom="2dp" android:left="2dp" android:top="-1dp" android:right="-1dp"/>
<corners android:radius="3dp" />
</shape> 

</item>
<!-- Background -->
<item>
<shape>
    <solid android:color="#fff" />
    <corners android:radius="3dp" />
</shape>
</item>
</layer-list>

2.Now no layout onde você quer que a sombra (exemplo: LinearLayout ) adicione no android : Fundo

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dip"
    android:background="@drawable/border_shadow"
    android:orientation="vertical">

e que funcionou para mim .