Cómo cargar dinámicamente R.styleable recurso?

Estoy tratando de exportar el SDK de Android de Facebook como un JAR para su uso en mi proyecto.

Esto requiere cargar todos los recursos dinámicamente.

Por ejemplo, tengo que hacer cambios similares a esto:

//findViewById(R.id.com_facebook_login_activity_progress_bar).setVisibility(View.VISIBLE); int viewID = getResources().getIdentifier("com_facebook_login_activity_progress_bar", "id", getPackageName()); findViewById(viewID).setVisibility(View.VISIBLE); 

La línea comentada muestra el original, y las 2 líneas siguientes muestran el cambio que hice para cargar el mismo recurso dinámicamente.

El SDK de Facebook declara un recurso R.styleable, y no puedo averiguar cómo cargarlo dinámicamente. Aquí está el código original:

 private void parseAttributes(AttributeSet attrs) { TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.com_facebook_profile_picture_view); setPresetSize(a.getInt(R.styleable.com_facebook_profile_picture_view_preset_size, CUSTOM)); isCropped = a.getBoolean(R.styleable.com_facebook_profile_picture_view_is_cropped, IS_CROPPED_DEFAULT_VALUE); a.recycle(); } 

Luego en attrs.xml, se declara lo siguiente:

  <declare-styleable name="com_facebook_profile_picture_view"> <attr name="preset_size"> <!-- Keep in sync with constants in ProfilePictureView --> <enum name="small" value="-2" /> <enum name="normal" value="-3" /> <enum name="large" value="-4" /> </attr> <attr name="is_cropped" format="boolean" /> </declare-styleable> 

¿Cómo puedo cargar este recurso dinámicamente, (por ejemplo, reemplazar la referencia de estilo R.)?

One Solution collect form web for “Cómo cargar dinámicamente R.styleable recurso?”

Estoy respondiendo a la pregunta aquí incase alguien está específicamente tratando de exportar también el SDK de Facebook como un tarro.

Utilicé la función descrita en la respuesta a esta pregunta: Acceso a recursos <declare-styleable> por programación

 private void parseAttributes(AttributeSet attrs) { int attrArray[] = StyleableHelper.getResourceDeclareStyleableIntArray(getContext(), "com_facebook_profile_picture_view"); //TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.com_facebook_profile_picture_view); TypedArray a = getContext().obtainStyledAttributes(attrs, attrArray); setPresetSize(a.getInt(0, CUSTOM)); isCropped = a.getBoolean(1, IS_CROPPED_DEFAULT_VALUE); //setPresetSize(a.getInt(R.styleable.com_facebook_profile_picture_view_preset_size, CUSTOM)); //isCropped = a.getBoolean(R.styleable.com_facebook_profile_picture_view_is_cropped, IS_CROPPED_DEFAULT_VALUE); a.recycle(); } 
  • Cómo utilizar DataBindingUtil con una ruleta Android?
  • Seleccionador de color de Android: actualizando la matriz de colores
  • Quiero analizar Google Map API para el geocódigo inverso en Android
  • Solicitud de lote con youtube api: obtenga la información de vídeo más reciente de varios canales
  • Retrofit 2 @path Vs @query
  • Diferencia entre los conceptos
  • W / cr_AwContents: onDetachedFromWindow llamado cuando ya está separado. Postergación
  • ¿Hay alguna biblioteca java para leer los códigos de barras del número vin de la imagen?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.