Простая макет теней в Android
Итак, я искал в Интернете способ отображения простой тени для макета, но нет подходящего способа сделать это.
Все, что я нашел, было обходным путем, когда вы создавали макет позади того, на который хотите применить тень, а затем настраивайте его на прозрачность и некоторые другие вещи.
Есть ли другой способ иметь простую макетную тень, не добавляя полностью новый макет?
Ответы
Ответ 1
Я смог придумать решение этой проблемы, и добавив View
ниже нашего знаменитого макета, отображая градиент от одного цвета к другому.
Обычно цвет Первый будет своего рода темно-сероватым, а Второй - цвет фона (в моем случае, у меня будет светло-серый фон, чтобы он не был полностью белым).
![Layout + View]()
xml будет выглядеть следующим образом:
...
<LinearLayout
android:id="@+id/headerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/headerImage"
android:orientation="vertical" />
<View
android:layout_width="fill_parent"
android:layout_height="5dip"
android:background="@drawable/drop_shadow" >
</View>
</LinearLayout>
...
drop_shadow.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#404040"
android:endColor="#F1F1F1"
android:angle="270"
>
</gradient>
</shape>
Я надеюсь, что это поможет;)
Ответ 2
Вы можете использовать класс android.support.v4.view.ViewCompat
, который устанавливает возвышение представления с использованием статического метода setElevation
. Класс является помощником для доступа к функциям, представленным после уровня API 4, с обратной совместимостью.
Базовая высота находится в пикселях, например
View mFab = (View) findViewById(R.id.floating_button);
ViewCompat.setElevation(mFab, 12);
Ответ 3
Для леденцов и выше вы можете использовать отметку.
Для более старых версий:
Вот ленивый взломать:
http://odedhb.blogspot.com/2013/05/android-layout-shadow-without-9-patch.html
(toast_frame не работает на KitKat, тень удалена из тостов)
просто используйте:
android:background="@android:drawable/toast_frame"
или
android:background="@android:drawable/dialog_frame"
в качестве фона
примеры:
<TextView
android:layout_width="fill_parent"
android:text="I am a simple textview with a shadow"
android:layout_height="wrap_content"
android:textSize="18sp"
android:padding="16dp"
android:textColor="#fff"
android:background="@android:drawable/toast_frame"
/>
и с другим цветом bg:
<LinearLayout
android:layout_height="64dp"
android:layout_width="fill_parent"
android:gravity="center"
android:background="@android:drawable/toast_frame"
android:padding="4dp"
>
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button shadow"
android:background="#33b5e5"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="#fff"
android:layout_gravity="center|bottom"
/>
</LinearLayout>