2015-05-06 5 views
12

Я хочу добавить светлую тень на правую и нижнюю стороны макета. Я попытался использовать android:background="@android:drawable/dialog_holo_light_frame", но он добавляет толстую тень на всех четырех сторонах макета. Мне нужно создать и установить в качестве фона?Добавить тень на правой и нижней стороне макета

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:background="@android:drawable/dialog_holo_light_frame"> 
     <ImageView 
       android:id="@+id/g" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:scaleType="centerCrop" 
       android:layout_gravity="center" 
       android:src="@drawable/logo_icon" 
       android:visibility="visible" 
       android:clickable="true" /> 
</LinearLayout> 
+0

http://stackoverflow.com/questions/14930984/extending-android-view-class-to-add-a-dropshadow - см это link – Madhu

+0

Я думаю, вам нужно пойти для пользовательского эффекта тени – VVB

+0

Это то, что я назвал, и это сработало. http://stackoverflow.com/questions/13005714/how-to-show-shadow-around-the-linearlayout-in-android – Prabhuraj

ответ

14

Я думаю, что это может решить вашу проблему

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
      <shape> 
       <padding android:bottom="2dp" android:left="0dp" android:right="2dp" 
         android:top="0dp"/> 
       <solid android:color="#00CCCCCC"/> 
      </shape> 
     </item> 
     <item> 
      <shape> 
       <padding android:bottom="2dp" android:left="0dp" android:right="2dp" 
         android:top="0dp"/> 
       <solid android:color="#10CCCCCC"/> 
      </shape> 
     </item> 
     <item> 
      <shape> 
       <padding android:bottom="2dp" android:left="0dp" android:right="2dp" 
         android:top="0dp"/> 
       <solid android:color="#20CCCCCC"/> 
      </shape> 
     </item> 
     <item> 
      <shape> 
       <padding android:bottom="2dp" android:left="0dp" android:right="2dp" 
         android:top="0dp"/> 
       <solid android:color="#30CCCCCC"/> 
      </shape> 
     </item> 
     <item> 
      <shape> 
       <padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp"/> 
       <solid android:color="#50CCCCCC"/> 
      </shape> 
     </item> 

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

Затем нанесите его на макет XML в качестве фона LinearLayoutandroid:background="@drawable/drawable_name"

+2

Хороший ответ. +1 для него. – Ravi

+1

Спасибо, это работает, но у градиента есть псевдонимы. – CoolMind

1

Это то, что я говорил, и она работала.

** 1.Add простой LinearLayout серого цвета, над которым добавить фактическое расположение, с запасом на нижней и правой равен 1 или 2 дп

2.have 9-патч изображение с тенью и установить его в качестве фона для вашего линейного расположения **

Other solutions here

+0

Пункт 1 - хорошая идея! – NightFury

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