Android View shadow
I know this question has already been answered but I want you to know that I found a drawable
on Android Studio
that is very similar to the pics you have in the question:
Take a look at this:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
It looks like this:
Hope it will be helpful
Edit
The option above is for the older versions of Android Studio
so you may not find it. For newer versions:
android:background="@android:drawable/dialog_holo_light_frame"
Moreover, if you want to have your own custom shape, I suggest to use a drawing software like Photoshop
and draw it.
Don't forget to save it as .9.png
file (example: my_background.9.png
)
Read the documentation: Draw 9-patch
Edit 2
An even better and less hard working solution is to use a CardView
and set app:cardPreventCornerOverlap="false"
to prevent views to overlap the borders:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="2dp"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:contentPadding="0dp">
<!-- your layout stuff here -->
</android.support.v7.widget.CardView>
Also make sure to have included the latest version in the build.gradle
, current is
compile 'com.android.support:cardview-v7:26.0.0'
How to add a shadow above a view in android
Here are some solutions for this problem - choose your best:
- On StackOverflow, in this post from 22 October 2012, you would read:
There is no such attribute in Android, to show a shadow. But possible ways to do it are:
- Add a plain LinearLayout with grey color, over which add your actual layout, with margin at the bottom and right equal to 1 or 2 dp.
- Have a 9-patch image with a shadow and set it as the background to your Linear layout.
and
There is also another solution to the problem by implementing a layer-list that will act as the background for the LinearLayoout.
Add background_with_shadow.xml file to
res/drawable
. Containing:<?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="@android:color/darker_gray" />
<corners android:radius="5dp"/>
</shape>
</item>
<item android:right="1dp" android:left="1dp" android:bottom="2dp">
<shape
android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="5dp"/>
</shape>
</item>
</layer-list>Then add the layer-list as background in your LinearLayout.
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_with_shadow"/>
You can also read: http://odedhb.blogspot.com/2013/05/android-layout-shadow-without-9-patch.html
- Another post from StackOverflow, how to set shadow to a View in android?, gives you another solution (using two views that form the shadow.):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:background="#CC55CC">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0">
<TableRow>
<LinearLayout
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/hello" />
</LinearLayout>
<View
android:layout_width="5dp"
android:layout_height="fill_parent"
android:layout_marginTop="5dp"
android:background="#55000000"/>
</TableRow>
</TableLayout>
<View
android:layout_width="fill_parent"
android:layout_height="5dp"
android:layout_marginLeft="5dp"
android:background="#55000000"/>
</LinearLayout>
</FrameLayout>
- You can also use specific drawable form Android resources to mimic a shadow effect. Look at: Android View shadow or just read a post below:
I'm using Android Studio 0.8.6 and I couldn't find:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
so I found this instead:
android:background="@android:drawable/dialog_holo_light_frame"
and it looks like this:
If you're interested in clean Material Design effect, read some documentation like below:
- Android L Developer Preview: Views and
Shadows - Defining Shadows and Clipping
Views
Android Drop Shadow on View
You could use a combination of Bitmap.extractAlpha and a BlurMaskFilter to manually create a drop shadow for any image you need to display, but that would only work if your image is only loaded/displayed once in a while, since the process is expensive.
Pseudo-code (might even compile!):
BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
/* Might need to convert shadowImage from 8-bit to ARGB here, can't remember. */
Canvas c = new Canvas(shadowImage);
c.drawBitmap(originalBitmap, offsetXY[0], offsetXY[1], null);
Then put shadowImage into your ImageView. If this image never changes but is display a lot, you could create it and cache it in onCreate to bypass the expensive image processing.
Even if that doesn't work as is, it should be enough to get you going in the right direction.
android add shadow below view
Use
getSupportActionBar().setElevation(10);
But as per Your Above Comment
in my app i made an LinearLayout as ActionBar did this will work
Than Use
YourView.setElevation(10);
How to show shadow around the linearlayout in Android?
There is no such attribute in Android, to show a shadow. But possible ways to do it are:
Add a plain LinearLayout with grey color, over which add your actual layout, with margin at bottom and right equal to 1 or 2 dp
Have a 9-patch image with a shadow and set it as the background to your Linear layout
how to set shadow to a View in android?
There are a simple trick, using two views that form the shadow.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:background="#CC55CC">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0">
<TableRow>
<LinearLayout
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/hello" />
</LinearLayout>
<View
android:layout_width="5dp"
android:layout_height="fill_parent"
android:layout_marginTop="5dp"
android:background="#55000000"/>
</TableRow>
</TableLayout>
<View
android:layout_width="fill_parent"
android:layout_height="5dp"
android:layout_marginLeft="5dp"
android:background="#55000000"/>
</LinearLayout>
</FrameLayout>
Hope this help.
How to add shadow on CardView aligned to bottom of parent
Well margin don't help much, so I put padding on main container and remove all those shadow properties because the android:elevation=""
is what is doing the job.
Here is some clear code, that is working for this need:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:clipToPadding="false"
android:clipChildren="false"
android:orientation="vertical"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--rest of the code-->
<LinearLayout
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:clipToPadding="false"
android:clipChildren="false"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="8dp"
android:divider="@android:color/transparent"
android:dividerHeight="0.0px"
android:clipToPadding="false"
android:clipChildren="false"
card_view:cardElevation="10dp"
card_view:cardPreventCornerOverlap="false">
<TextView
android:layout_width="match_parent"
android:padding="20dp"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum"
/>
</android.support.v7.widget.CardView>
</LinearLayout>
</RelativeLayout>
And an image on how this looks:
Background shadow in android
New and Best Approach (I hope that's what you required)
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/passwordTV"
style="@style/Widget.App.TextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/text_input_selector"
android:backgroundTint="#0B102C"
android:outlineAmbientShadowColor="#1EB0D5"
android:outlineSpotShadowColor="#1EB0D5"
android:textColorHint="#4A5478"
android:translationZ="@dimen/_10sdp"
app:endIconDrawable="@drawable/ic_show_password"
app:endIconMode="password_toggle"
app:hintTextColor="#4A5478">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/passwordEt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableStart="@drawable/ic_lock"
android:drawablePadding="7dp"
android:hint=" Password"
android:inputType="textPassword"
android:textColor="@color/white"
android:textColorHint="#CAD5F4"
android:textSize="12dp" />
</com.google.android.material.textfield.TextInputLayout>
you just create a text_input_selector in drawable
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="@drawable/background_glow"/>
</selector>text_input_selector.xml
Now create a shape for background glow in drawable
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#0C263E"/>
<corners android:radius="7dp"/>
</shape>
background_glow.xml
Related Topics
Why Bitmap to Base64 String Showing Black Background on Webview in Android
Android Browser Bug? Div Overflow Scrolling
Finding Android Sdk on MAC and Adding to Path
How to Record Audio on Webpage (iOS, Android, Pc/Mac) - No Flash
Android Browser Ignores Responsive Web Design
How to Show a Mediacontroller While Playing Audio in Android
Didn't Find Class on Path: Dexpathlist
Changed Jquery Mobile's Default Icon Set, Work on Browser, Failed on Device
CSS Overflow and Absolute Positioning Issue on Android Browser
Provide the Caller Id for Incoming Call from My Own App
Mobile Keyboard Pushes Up Content Because of an Absolutely Positioned Drawer
Android: Listview.Getscrolly() - Does It Work
Android App Installation Failed: Package Com.My.App Has No Certificates at Entry Androidmanifest.Xml
Scaling a Phonegap App for Different Android Screen Sizes/Densities
Execution Failed for Task: ':App:Mergedebugresources'. Android Studio