2012-05-21 4 views
15

비슷한 기능을 가지고 있지만 드로어와 레이아웃이 다른 두 개의 Android 애플리케이션이 있습니다.Android 라이브러리 프로젝트에 정의 된 drawable을 재정의하는 방법은 무엇입니까?

저는 모든 코드와 리소스를 라이브러리 프로젝트에 넣고 해당 라이브러리를 참조 할 수있는 두 응용 프로그램의 드로어 블 및 레이아웃 중 일부를 재정의하고 싶습니다.

라이브러리를 참조하는 응용 프로그램을 만들었습니다. 라이브러리의 모든 리소스를 응용 프로그램에 복사하고 드로어 블 중 일부를 변경했습니다. 또한 문자열 리소스 중 일부를 변경했습니다. Eclipse의 레이아웃 편집기에서 변경된 레이아웃 중 하나를 볼 때 올바른 오버라이드 된 이미지를 볼 수 있습니다.

응용 프로그램을 시작할 때 응용 프로그램에서 변경된 문자열 리소스가 올바르게 표시되지만 라이브러리 문자열은 응용 프로그램의 리소스로 대체되지만 내 ImageView의 드로어 블은 모두 리소스에서 가져온 것입니다. 도서관의

일부 레이아웃 리소스 (일부 이미지의 이동 및 크기 조정)가 변경되었습니다. 변경된 레이아웃 (소스 코드가 라이브러리에있는 활동)을 사용하는 활동을 시작하면 이전 (라이브러리) 드로어 블이있는 새로운 (애플리케이션) 레이아웃이 표시됩니다. 레이아웃 XML의

  1. :

    ImageView view = (ImageView)findViewById(R.id.viewId); 
    view.setImageResource(R.drawable.image_id); 
    
: 활동의 코드에서 android:src="@drawable/image_id"

  • 나는 두 가지 방법으로 ImageView의의 드로어 블을 정의하는 시도

    두 경우 모두 내가 보는 이미지는 리소스에서 가져옵니다. 응용 프로그램이 아니라 도서관 프로젝트의

    이 문제를 해결할 수 없으면 두 응용 프로그램에서 모든 코드를 복제해야합니다. 이는 수치 스럽습니다.

    내가 잘못 했나요?

  • +0

    귀하의 질문에 투표 한 결과, 특히 귀하의 답변을 통해 매우 유용하게 보였습니다. drawable을 오버라이드하는 것은 메소드를 오버라이드하는 것만큼이나 중요한 접근법이며, 훨씬 쉽고 간결하게 만듭니다. 과도한 매개 변수와 코딩이 필요 없습니다. – Stan

    답변

    2

    위의 의견에서 썼 듯이 프로젝트를 정리하고 다시 빌드하여 문제를 해결할 수있었습니다.

    +1

    downvote가 무엇인지 확실하지 않습니다. 이 대답은 내 문제를 해결했다. 그렇지 않으면 여기에 게시하지 않을 것입니다. – Eran

    +1

    "솔루션"은 "프로젝트를 정리하고 다시 빌드"하는 동안 정확하게 수행 한 것과 같은 세부 정보를 제공하지 않습니다. 손으로 일부 자원을 제거 했습니까? 당신은 gradle의 깨끗한 작업을 수행하고 있습니까? – StAlex

    +0

    @StAlex 게시 한 지 오래되었으므로 자세한 내용은 기억이 나지 않지만 Eclipse IDE에서 프로젝트를 정리하고 다시 작성했다고 생각합니다. "정리"는 Eclipse 프로젝트에서 수행 할 수있는 조작입니다. – Eran

    1

    Drawable의 resourceId를 개체의 매개 변수로 제공하기 위해 항목을 복사하여 붙여 넣지 마십시오.

    4

    내 경험에 비추어 볼 때, 스타일 및 refs.xml을 사용하여 라이브러리 모듈의 드로어 블 리소스를 대체 할 수 있습니다.

    먼저 당신은 스타일이 재정의 응용 프로그램에서 다음

    <style name="drawable_base_style"> 
        <item name="android:src">@drawable/base</item> 
    </style> 
    

    (모듈 또는 IDE에 따라 프로젝트)와 같은 스타일로 그리기 가능 자원을 선언해야

    <style name="drawable_base_style_app"> 
        <item name="android:src">@drawable/app</item> 
    </style> 
    

    및 refs.xml을 사용하여 새 스타일을 가리 킵니다. 다음

    <item name="drawable_base_style" type="style">@style/drawable_base_style_app</item> 
    

    마지막 단계

    : 당신의 손가락을 교차.

    0

    나는 똑같이했고 아무런 문제가 없었다. 이미지가 무시되었습니다.

    관련 문제