2013-06-18 7 views
0

나는 한동안 복합 컴포넌트를 사용 해왔다. 나는 약간의 문제에 직면하고 빠른 솔루션이 있는지 궁금해한다.비 뷰 그룹을 대체하기 위해 xml을 부풀려 라

나는 사용자 정의 시크 바가 필요하다. 이미 스타일/테마로 사용하고있다. 꽤 정교하다. 코드로 복제하지 않을 것이다. . 모든 탐색 막대는 프로그래밍 방식으로 더 복잡한 블록의 일부로 만들어지며이를 변경하는 옵션이 아닙니다.

Seekbar만으로 XML을 만들고이 스타일을 적용하면이 XML을 Seekbar를 확장하는 복합 클래스로 "확장"할 수 있습니까?

inflate 함수는 뷰 그룹 만 허용하지만 "replaceroot"버전은 정상적인 뷰에서도 잘 작동 할 수 있습니다. 사전

public class SeekBarYellow extends SeekBar { 

    public SeekBarYellow(Context context) { 
     super(context); 
     construct_programmatically(context); 
    } 
    private void construct_inflating(Context context) { 
     // how do I inflate a <SeekBar android:style=xxxx android ...> 
     // into here? (R.layout.seekbar_yellow) 
    } 

    // i'd like to avoid this, by inflating R.layout.seekbar_yellow 
    private void construct_programmatically(Context context) { 
     Resources r=context.getResources(); 
     this.setThumb(r.getDrawable(R.drawable.scrubber_control_selector_holo_dark)); 
     this.setProgressDrawable(r.getDrawable(R.drawable.scrubber_progress_horizontal_holo_dark)); 
     this.setIndeterminateDrawable(r.getDrawable(R.drawable.scrubber_progress_horizontal_holo_dark)); 
     this.setMinimumHeight(13); 
     this.setMinimumWidth(13); 
     this.setThumbOffset(16); 
     this.setPadding(16,0,16,0); 
    } 
} 
에서

감사

+0

및 모든 기능의 작동을 사용하여 다른 XML 파일, XML 파일을 생성하고 "com.yourpackage을 넣어, 그것의 XML 뷰를 만들 수 있습니다. yourapp.yourseekbar "보기의 클래스로 : 그리고 나서 XML을 부풀려 –

+0

검색 바는 단지 주식 탐색 바입니다. 다른 자산 집합 (테마). Seekbar와 Style 속성만으로 레이아웃을 팽창시키는 아이디어로 Seekbar를 확장 할 수는 있지만 inflate 함수는 뷰 그룹을 수용하기 때문에 실패했습니다. ( – rupps

+0

seekbar에 대한 코드를 게시 할 수 있습니까? –

답변

1

넣어 이것을 seekbar_yellow.xml의 레이아웃 폴더에있는 파일, 그것은 inflater.inflate(R.layout.seekbar_yellow,null);

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" //<--- add this part 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation = "vertical"> 
    <SeekBar 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:indeterminateDrawable="@drawable/scrubber_progress_horizontal_holo_dark" 
     android:minHeight="13dp" 
     android:minWidth="13dp" 
     android:paddingBottom="0dp" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 
     android:paddingTop="0dp" 
     android:progressDrawable="@drawable/scrubber_progress_horizontal_holo_dark" 
     android:thumb="@drawable/scrubber_control_selector_holo_dark" 
     android:thumbOffset="16dp" /> 

</LinearLayout> 

를 사용하여 팽창 내부의 모든 이것을 드로어 블이 당신의 당김 폴더에있는 가정, 그들이 안드로이드 드로어 블 폴더에 있다면 @ android/drawable/nameofdrawable로 액세스하십시오

이 파일을 포함 할 수도 있습니다. N

<include layout="@layout/seekbar_yellow"/> 
당신의 검색 막대가 오버라이드 (override)에 "onDraw는"방법이있는 경우
+0

답변 해 주셔서 감사합니다! 그러나 불행히도 ViewGroup이 대상이되어야하고 Seekbars가 Viewgroup이 아니라 일반 뷰이므로 Inflater.inflate를 사용할 수 없습니다. 이 경우 – rupps

+0

을 선형 레이아웃으로 포장하십시오. –

+0

hehe ... 레이아웃 포장이 저렴하지 않습니다. 코드와 추가 레이어가 3000 줄 추가됩니다. 이 질문은 비 뷰 그룹을 팽창시키는 것이 가능한지 알아내는 것입니다! – rupps