est-il possible de changer la couleur de l'ombre produite par la propriété d'élévation xml? Je veux que l'ombre soit modifiée dynamiquement par le code.
Je sais que cette question est très ancienne et probablement l'auteur n'a plus besoin de réponse. Je vais le laisser ici pour que les autres puissent le trouver.
Le système d'élévation de Lollipop ne prend pas en charge les ombres colorées.
Mais, si vous avez besoin d'ombres colorées, il est possible de les obtenir en utilisant du carbone. C'est une sorte de bibliothèque de support pour Material Design et dans la version la plus récente il y a une option pour changer la couleur de l'ombre. Il y a une tonne de jolis dessins sur Behance avec des ombres colorées et je pensais que ce serait bien de les avoir malgré l'absence d'une telle fonctionnalité dans Android. Il est important de noter que les ombres colorées sont émulées sur toutes Android, sur 5.0+ également).
https://github.com/ZieIony/Carbon
L'image et le code suivants peuvent être trouvés dans les échantillons de Carbon.
Code:
<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>
Démarrage de l'API 28 (Pie) View # setOutlineAmbientShadowColor (int color) et View # setOutlineSpotShadowColor (int color) sont disponibles dans la classe View.
Si vous utilisez l'élévation sur votre vue, vous pouvez utiliser les deux méthodes pour modifier la couleur de l'ombre.
Vous pouvez utiliser Disposition des ombres . Vérifiez mon réponse .