While it’s not the intended use of the tick gap feature, setting it to a negative value will, as you have found, move the axis labels onto the plot area. However, the labels will still be overwritten by the lines or columns on the plot area unless you give them an alpha component too - this can be done by using the methods in the style objects of the series.
Just setting a negative tick gap will still leave space for the where the labels would have been drawn. Again, while it’s not the intended use of the feature, you can get rid of this space by calling setExpectedLongestLabel("") on the axis so that it expects the longest string to be the empty string. You need to still show the major ticks marks but can set their length to be 0.
As I said, this is not the intended use of the tick gap feature but I’ll certainly make a note of your requirement for placing the labels on the plot area; you’re not the only person to have asked about this and so we may in the future look to providing a more definite solution.