Можно ли изменить цвет тени, созданный свойством xml elevation? Я хочу, чтобы тень динамически менялась с помощью кода.
Изменение цвета материала
Ответ 1
Я знаю, что этот вопрос очень старый и, возможно, автору больше не нужен ответ. Я просто оставлю это здесь, чтобы другие могли его найти.
Система рельефа Lollipop не поддерживает цветные тени.
Но, если вам нужны цветные тени, их можно получить с помощью Carbon. Это своего рода библиотека поддержки для Material Design, и в самой последней версии есть возможность изменить цвет тени. На Behance было множество отличных дизайнов с цветными тенями, и я подумал, что было бы неплохо иметь их, несмотря на отсутствие такой функции в Android. Важно отметить, что цветные тени эмулируются на всех версиях Android, в том числе и на 5. 0+.
https://github.com/ZieIony/Carbon
Следующее изображение и код можно найти в образцах углерода.
Код:
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<carbon.widget.Button
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="@dimen/carbon_padding"
android:background="#ffffff"
app:carbon_cornerRadius="2dp"
app:carbon_elevation="8dp"
app:carbon_elevationShadowColor="@color/carbon_red_700"/>
</carbon.widget.LinearLayout>
"CardView":
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_margin="@dimen/carbon_margin"
android:background="#ffffff"
app:carbon_cornerRadius="2dp"
app:carbon_elevation="8dp"
app:carbon_elevationShadowColor="@color/carbon_red_700">
<carbon.widget.ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@drawable/test_image"/>
<carbon.widget.TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test text"/>
</carbon.widget.LinearLayout>
</carbon.widget.LinearLayout>
Ответ 2
Запуск API 28 (круговая диаграмма) View # setOutlineAmbientShadowColor (int color) и View # setOutlineSpotShadowColor (int color) доступны в классе View.
Если вы используете возвышение в своем представлении, вы можете использовать оба метода для изменения цвета тени.
Ответ 3
Вы можете использовать Shadow Layout. Проверьте мой ответ.