2013-09-25 2 views
2

Я использую прямоугольную форму, чтобы показать некоторые ImageView в it.I хочет, чтобы дать ящику внешнюю тень, как этого enter image description hereКак отдать тень к коробке в андроиде?

Я использую это содержание XML

<corners android:radius="3dp" /> 

<stroke 
    android:width="1dp" 
    android:color="#AAAAAA" /> 

<solid android:color="#FFF" /> 

и получить это box enter image description here

Не могли бы вы рассказать, как это сделать?

ответ

1

К сожалению, вы не можете добавлять тени через код/​​XML в Android, если вы не хотите, чтобы начать перекрывая OnDraw и вручную рисовать тень (что, вероятно, не даст вам больших результатов, будет дорого стоить и не стоит того времени, если вы спросите меня).

Для этого вам понадобится решение с 9 патчами.

Я чувствую вашу боль, хотя ... :)

+0

ОК .. спасибо за ваше предложение. :) – Nidhi

0

попробуйте этот код, Я сделал это с помощью двух раскладку, но вы можете объединить его в один

в файле XML написать этот код

 <RelativeLayout 
       android:id="@+id/home_screen" 
       android:layout_height="150dp" 
       android:layout_width="fill_parent" 
       android:layout_marginTop="50dp" 
       android:background="@drawable/background_border" >     

       <LinearLayout 
        android:layout_height="150dp" 
        android:layout_width="fill_parent" 
        android:layout_margin="10dp"       
        android:background="@drawable/home_border" > 

        <ImageView 
         android:id="@+id/iv" 
         android:layout_height="fill_parent" 
         android:layout_width="fill_parent" 
         android:layout_margin="10dp" 
         android:background="@drawable/menu_background" /> 

       </LinearLayout>  

    </RelativeLayout> 


and the two xml in res/drawable is here 

    home_border.xml 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 

<item android:left="1dp" android:right="1dp" android:top="1dp" 
    android:bottom="1dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
      <stroke android:width="10dp" android:color="@android:color/white" /> 
     <corners 
     android:bottomRightRadius="1dp" 
     android:bottomLeftRadius="1dp" 
    android:topLeftRadius="1dp" 
    android:topRightRadius="1dp"/> 
    </shape> 
</item> 
</layer-list> 


and background_border.xml 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 
    <item android:left="-10dp" android:right="-10dp" android:top="-10dp" 
     android:bottom="-10dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#884d4d4d" /> 
     <stroke android:width="1dp" android:color="@android:color/white" /> 
     </shape> 
    </item> 
</layer-list> 

попробуйте это. здесь # 884d4d4d - это цветовой код для вашего прозрачного цвета - это сочетание двух цветных прозрачных и серых

2

Я использовал учебник и изображения из следующей ссылки, и это дало мне идеальную тень (мне просто нужно было настроить отступы моим симпатиям): http://sapandiwakar.in/adding-shadows-to-views-in-android-using-9-patch-image/

Просто добавьте тень на родительский взгляд и ваш обычный фон на вершине, что:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/shadow" 
    android:paddingBottom="4dp" 
    android:paddingLeft="5dp" 
    android:paddingRight="4dp" 
    android:paddingTop="4dp" 
    android:layout_gravity="center" 
    > 
    <LinearLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:background="@drawable/popup_menu_background"> 

     <ListView 
      android:id="@+id/listViewMenu" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content"> 
     </ListView> 
    </LinearLayout> 
</LinearLayout> 

и результат:

enter image description here

Смежные вопросы