ich habe frei.
why do Germans say like that? haben+adj?
"Ich habe frei" (also: "du hast frei", "wir haben frei" etc; the infinitive form stated in dictionaries is "freihaben") is a fixed expression in German.
This structure can't be used with other adjectives, as far as I'm aware right now.
This is a fixed expression that has to be learned with its meaning, similar to English phrasal verbs, such as "put up with something", which have a meaning that can't be explained by analysing each word of the phrasal verb: You have to learn the combination of words with its particular meaning as combination (fixed expression).
It's maybe noteworthy that it's not a case of verb+adjective/adverb [which would be very strange indeed]. It goes back to the compound verb freihaben. Like all prefixes of separable compound verbs the prefix frei is pushed to the end in most sentences (cf. https://www.korrekturen.de/wortliste/freihaben.shtml)
Other similar words include freimachen, freischaufeln, freikaufen, etc. But not frei sein.
That being said, for most of these verbs the Duden (our Merriam-Webster) acknowledges the alternative spelling frei machen, frei haben, etc., cf. https://www.duden.de/rechtschreibung/frei) And many Germans (count me in) are all over the place since the rules are somewhat obscure.