Selecionador de cores suspensas Android

Eu quero criar um seletor de cores suspensas, algo assim (desculpe pela imagem feia):

Eu só preciso de algumas cores (digamos 6), então eu não preciso de um seletor de cores completo, o menu suspenso funcionará bem.

Eu sei que tenho que estender o adaptador de matriz para o Spinner e substituirgetDropDownView egetView.

O que eu não sei é como criar uma caixa quadrada com uma borda e uma cor de fundo sólida.

Eu sei que posso definir minha própria forma dentro de drawable. De qualquer forma eu tenho que definir a cor de fundo em tempo de execução, então eu também preciso mudar a visão e definir a cor de fundo correta.

Qual é a melhor maneira de fazer isso? Obrigado.