There are so many theories as to why Elizabeth didn't have an heir.
While she was the queen, she couldn't marry who she wanted to. During those sexist times, it was expected that women would obey their husbands. Any man Elizabeth married would have tried to assert himself above her, and she, nevermind her council, would have been dead against that. Several men tried to marry her to get their hands on the English throne, including her sister's husband and her stepmother's husband.
Next, there is a strong belief she was in love with Robert Dudley. The Dudley family had a bit of a dodgy past, and the council were not keen on him being king consort in any shape or form. Plus he was married, and his wife died in very mysterious circumstances. If Elizabeth had done what Mary Queen of Scots had done, and married an unsuitable, scandalous man, she would have lost her throne and she knew it.
Let's not forget, Elizabeth's claim to the throne was not a strong one. While she was the daughter of Henry VIII, many viewed her as illegitimate for one reason or another. Henry VIII annuled his marriage to Anne Boleyn, while the catholics never recognised Henry VIII's divorce to Catherine of Aragon and marriage to Anne in the first place.
In the end, Henry VIII did put Mary Tudor and Elizabeth back in the line of succession after Edward, probably because he thought Edward would live to produce heirs himself. But Edward died at 15, leaving the throne to his cousin Jane Grey rather than his sister Mary (he didn't want England to go back to catholicism). So it's no wonder some saw Mary Queen of Scots as the true queen, seeing as her parentage and claim to her own throne was undisputed.