Configuración de GradientDrawable a través de RemoteView

Esto es lo que quiero hacer: tengo un widget y quiero establecer su fondo dependiendo de la elección de colores de los usuarios. Tiene que ser un gradiente. El fondo debe configurarse configurando el fondo del linealLayout. Para las pruebas, lo hice para un fondo ficticio como:

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

He visto esta pregunta:Llame a setImageDrawable desde RemoteViews pero no soy capaz de entender cómo implementar. Ni siquiera puedo encontrarsetXYZ() como se menciona allí. Esto es lo que he intentado hasta ahora:

Haciendo un gradiente dibujable dinámicamente. En este enfoque, no puedo establecer el fondo porque AFAIK todos los métodos toman identificación del dibujable y tengo un objeto dibujable.

Intenté ImageView como fondo (antes de LinearLayout). No proporciona margen adecuado para el widget. Dado que el texto del widget es dinámico, a veces sale de imageView, que no es lo que quiero

Haciendo un bg.xml en el que tengo:

<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>

Ahora estoy totalmente confundido y atorado. ¿Puede alguien ayudar (Probablemente más de código y menos de enlaces.) Lo antes posible? También por favorno cierre esta pregunta como ya se ha preguntado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta