The issue is similar to the classic Plot draws list of curves in same color when not using Evaluate.
Plotting is one of the more dynamic areas of development in Mathematica, so this explanation is based on V11.1.
The initial source of the trouble is that plotting functions such as StreamDensityPlot hold their arguments, that is, the expression is what they get and not its value. In StreamDensityPlot, argument is used as is to determine its type and the subsequent styling of the plot. It probably should evaluate it at a numerical point in the domain, but that is not how it is currently programmed to behave. In OP's case, the argument is a symbol and not a vector and Length[gradient] is 0. This length is passed to a styling function, which thinks, "That's ridiculous, I'm defaulting to the default styling," if I may anthropomorphize.
Here a comparison of using the symbol gradientfield as an argument with passing its value with Evaluate@gradientfield.
Trace[ StreamDensityPlot[gradientfield, {x, y} ∈ mesh, StreamStyle -> Black, Mesh -> None, ColorFunction -> "Rainbow", PlotRange -> All, PlotLegends -> Automatic], _Charting`customVectorStyle ]

Trace[ StreamDensityPlot[Evaluate@gradientfield, {x, y} ∈ mesh, StreamStyle -> Black, Mesh -> None, ColorFunction -> "Rainbow", PlotRange -> All, PlotLegends -> Automatic], _Charting`customVectorStyle ]

In the OP's case, the styling function evaluates to an empty list, which is then replaced by the default styling of stream lines:

One can fix the problem with any method that passes the value of gradientfield, such as Evaluate@gradientfield. One can also use With:
With[{g = gradientfield}, StreamDensityPlot[g, {x, y} ∈ mesh, StreamStyle -> Black, Mesh -> None, ColorFunction -> "Rainbow", PlotRange -> All, PlotLegends -> Automatic]]
However, passing the option Evaluated -> True has no effect. The option is not a documented option of SteamDensityPlot, but it is present among Options[StreamDensityPlot] and generates no errors.
The documentation of SteamDensityPlot discusses uses of Evaluate, but not this specific issue. From my own point of view as a user, even given the long-standing fame of the question linked at the top of my answer, I consider this an unnecessary constraint on usage (i.e., a bug).
Test Code
The OP did not supply test code so I made this up:
Needs["NDSolve`FEM`"]; gradientfield = {x, y}; mesh = ToElementMesh[Rectangle[]]; StreamDensityPlot[gradientfield, {x, y} ∈ mesh, StreamStyle -> Black, Mesh -> None, ColorFunction -> "Rainbow", PlotRange -> All, PlotLegends -> Automatic, Evaluated -> True]