Android LinearLayout : Добавить границу с тенью вокруг LinearLayout

? wawanopoulos @ | Original: StackOverFlow
---

Я хотел бы создать такой же границы этой LinearLayout, как в примере :

Android LinearLayout : Добавить границу с тенью вокруг LinearLayout

В этом примере мы видим, чтограница неодинаковой по всему LinearLayout . Как я могу создать это, используя в Drawable файл XML?

На данный момент, у меня есть только возможность создать простую рамку вокруг LinearLayout вроде этого:

<?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 ответ

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 @

В качестве альтернативы, вы можете использовать 9 патч изображение в качестве фона для макета, что позволяет более "естественных" тени:

Android LinearLayout : Добавить границу с тенью вокруг LinearLayout

Result:

Android LinearLayout : Добавить границу с тенью вокруг LinearLayout

Положите изображение в папке /res/drawable . Убедитесь, чтофайл имеет расширение .9.png, а не .png

Кстати, этоизменить ( уменьшить до минимума размер квадратного ) существующей ресурс, находящийся в папке API 19 SDK ресурсов. Я оставил красные маркеры, так как они, кажется, не быть вредным, как показано в инструменте draw9patch .

[EDIT]

Около 9 патчи, в случае, если вы никогда не имели ничего общего с ними.

Просто добавьте его в качестве фона на ваш взгляд .

Черно- маркированными областями ( слева и сверху ) будет растягиваться ( вертикально, горизонтально). Черные маркировку области (справа, внизу) определить « область содержимого " ​​(где это возможно, чтобы добавить текст или представлений - Вы можете позвонить без опознавательных знаков регионы " обивка ", если вы хотите ) .

Учебное пособие: http://radleymarx.com/blog/simple-guide-to-9-patch/

3user3619170 @

Ладно, я знаю, что это слишком поздно. но я была такая же требование. я решил, как это

1.First создать файл XML ( пример: border_shadow.xml ) в " чтобы сместить "     папки и скопируйте приведенный ниже код в него.

<?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. Теперь на макете, где вы хотите тень (пример: LinearLayout ) Добавить в андроида : фон

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

и что работает для меня .