Configurando o GradientDrawable através do RemoteView

Aqui está o que eu quero fazer: Eu tenho um widget e quero definir seu fundo dependendo da escolha de cores dos usuários. Tem que ser um gradiente. O backgound deve ser definido definindo o plano de fundo do linearLayout. Para testes, fiz isso para um plano de fundo falso como:

remoteViews.setInt(R.id.layout, "setBackgroundResource", R.drawable.widget_background);

Eu vi essa pergunta:Chame setImageDrawable a partir de RemoteViews mas não consigo entender como implementar. Eu ainda não consigo encontrarsetXYZ() como mencionado lá. Aqui está o que eu tentei até agora:

Fazendo um gradiente drawable dinamicamente. Nesta abordagem, eu não sou capaz de definir o background beacause AFAIK todos os métodos tomam id do drawable e eu tenho um objeto drawable.

Tentei ImageView como um fundo (antes de LinearLayout). Não fornece margem adequada ao widget. Como o texto do widget é dinâmico, às vezes ele sai da imageView, que não é o que eu quero

Fazendo um bg.xml no qual eu tenho:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
       <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />
       <corners
            android:bottomLeftRadius="7dp"
            android:bottomRightRadius="7dp"
            android:topLeftRadius="7dp"
            android:topRightRadius="7dp" />
</shape>

Agora estou totalmente confuso e preso. Alguém pode ajudar (provavelmente mais de código e menos de links) ASSIM QUE POSSÍVEL? Além disso, por favornão feche esta questão como já foi perguntado.

questionAnswers(1)

yourAnswerToTheQuestion