2013-03-01 14 views
5

Próbuję wyeksportować zestaw SDK do systemu Android Android jako plik JAR do użycia w moim projekcie.Jak dynamicznie ładować zasobę R.styleable?

Wymaga to dynamicznego ładowania wszystkich zasobów.

Na przykład, muszę dokonać zmiany podobny do tego:

//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); 

komentowanym linia pokazuje oryginał, a poniżej 2 linie pokazują zmiany zrobiłem załadować ten sam zasób dynamicznie.

Zestaw SDK serwisu Facebook deklaruje zasób R.styleable i nie wiem, jak go załadować dynamicznie. Oto oryginalny kod:

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(); 
} 

Następnie w attrs.xml się, co następuje oświadczył:

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

Jak mogę załadować ten zasób dynamicznie (np zastąpienie odniesienia R.styleable)?

+1

patrz [Uzyskiwanie dostępu środki programowo] (http://stackoverflow.com/questions/13816596/accessing- declare-styleable-resources-programatically) post może pomóc w rozwiązaniu bieżącego numeru –

+0

Awesome, dziękuję za szybką odpowiedź .. To było dokładnie to, czego potrzebowałem. Jeśli napiszesz jako odpowiedź, zaznaczę to! – ch3rryc0ke

Odpowiedz

3

Odpowiadam na pytanie tutaj, pod którym ktoś próbuje szczególnie wyeksportować zestaw SDK Facebooka jako słoik.

użyłem funkcji opisanej w odpowiedzi na to pytanie: Accessing <declare-styleable> resources programatically

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(); 
} 
Powiązane problemy