LinearLayout Android : Aggiungi confine con ombra intorno a un LinearLayout

? wawanopoulos @ | Original: StackOverFlow
---

Vorrei creare lo stesso confine di questa LinearLayout come esempio :

LinearLayout Android : Aggiungi confine con ombra intorno a un LinearLayout

In questo esempio, possiamo vedere che il confine non è la stessa in tutto il LinearLayout . Come posso creare questo utilizzando un file xml drawable ?

Per ora, ho solo in grado di creare un semplice confine tutto il LinearLayout in questo modo :

<?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 Risposta

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 @

In alternativa, è possibile utilizzare un'immagine 9 patch come sfondo per il layout, consentendo più ombre "naturali" :

LinearLayout Android : Aggiungi confine con ombra intorno a un LinearLayout

Result:

LinearLayout Android : Aggiungi confine con ombra intorno a un LinearLayout

Mettere l'immagine nella cartella /res/drawable . Assicurarsi che l'estensione del file è .9.png, non .png

Tra l'altro, questo è un modificato (ridotto alla dimensione minima piazza ) di una risorsa esistente si trova nella cartella API 19 risorse SDK. Ho lasciato i marcatori rossi, poiché non sembrano essere dannosi, come mostrato nello strumento draw9patch .

[EDIT]

Circa 9 patch, nel caso in cui non hanno mai avuto niente a che fare con loro .

Basta aggiungere come sfondo del vostro View .

Le aree nere - segnato ( a sinistra e in alto) si allungheranno ( verticale, orizzontale ) . Le aree nere - marcata (a destra, in basso) definiscono il " area di contenuto " (dove è possibile aggiungere testo o Vista - è possibile chiamare le regioni non marcati "padding ", se vi piace ) .

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

3user3619170 @

va bene, so che questo è troppo tardi . ma ho avuto la stessa esigenza . ho risolto in questo modo

1.First creare un file xml ( esempio : border_shadow.xml ) in " disegnabile "     cartella e copiare il codice qui sotto in esso .

<?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 sul layout in cui si desidera l'ombra ( esempio : LinearLayout ) aggiungere questo in Android : sfondo

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

e che ha lavorato per me .