2010-04-30 5 views
13

리소스 xml 내에서 참조하려는 드로어 블을 확장하는 클래스를 만들었습니다. 그래서처럼 선택에 필요한 일이 :Android XML에서 드로어 블 클래스를 참조하는 방법

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_window_focused="false" android:state_pressed="false" 
android:drawable="com.sample.android.contacts.TopBarCollapsed" 
/> 
<item android:state_window_focused="true" android:state_pressed="true" android:drawable="@drawable/top_switcher_collapsed_selected" /> 
<item android:state_focused="true" android:drawable="@drawable/top_switcher_collapsed_focused" /> 

com.sample.android.contacts.TopBarCollapsed이 그릴 수를 확장하는 클래스입니다.

http://developer.android.com/guide/topics/ui/custom-components.html#modifying

확실하지 그 드로어 블을 확장하는 클래스에 적용되지만 시도 그 가치는 ... 또 한가지, 내가 보관하는 경우 : 자원 XML 체크 아웃에서 사용자 지정보기 수업이 예를 들어

+2

이 부분에 대한 정보가 계속 있습니다 -이 메모를 찾았습니다 http://groups.google.com/group/android-developers/browse_thread/thread/140ea9d8992434d7/28d94f078f15a6b4?lnk=gst&q=drawable#28d94f078f15a6b4 나는 그것이 불가능하다고 말하는 것으로 읽었습니다. . –

+0

XML 마크 업에서 임의의 드로어 블 클래스를 허용하는 것이 보안 고려 사항 때문에 허용되지 않는다고 말한 다른 토론 스레드 (URL 분실)를 발견했습니다. 어떤 의미가 있습니다 : 무해한 응용 프로그램에 대해 "악의적 인 Drawable"을 제공하는 것이 상대적으로 쉽고, drawable의 코드는 무고한 응용 프로그램의 맥락에서 실행됩니다. –

답변

-4

사용자 정의보기 구성 요소가 내부 클래스로 정의되지 않은 경우 XML 구성 요소 이름을 사용하여 View 구성 요소를 선언하고 제외 할 수 있습니다. 클래스 속성 예를 들어 :

<com.android.notepad.MyEditText 
id="@+id/note" 
... /> 
3

나는이 잘 여기에 대답했다 믿습니다

https://stackoverflow.com/a/11024035/2662474는 불행하게도 인해 잠재적 인 보안 문제에 XML 파일에서 사용자 정의 드로어 블을 사용할 수 없습니다. 안드로이드 개발자 중 한 명인 Romain Guy의 답변으로이 주제에 관한 Google 그룹스 스레드는 here을 참조하십시오.

그래도 Java 코드에서 사용할 수 있습니다.

사용자 정의 드로어 블은 대부분 보안상의 이유로, XML에서 허용되지 않습니다 로마의 글을 링크에서

. XML 드로어 블은 다른 프로세스 (Launcher 또는 시스템 프로세스 포함)에서 리소스로로드 할 수 있으며 이러한 프로세스에서 임의의 타사 코드를 실행하는 것은 끔찍한 생각입니다.

보안은 필수적이지만 개발자로서 더 일관성 있고 제어하기위한 명확한 방법이 있다면 확실히 좋을 것입니다.

관련 문제