2012-02-05 2 views
0

페이지가있는만큼의 점들로 구성된 사용자 정의 가로 탐색 막대를 만들고 싶습니다.사용자 정의 탐색 막대 android

내 생각은 다음과 같습니다

  1. 지정 ListView에
  2. 클래스 점은
  3. 동적으로 사용자 지정 목록보기에 모든 점을 추가보기에서 확장 만들기
  4. ..

작성이 권리인가 그렇게하려면?

편집 : 당신은 ListView에 필요한 이유

public class NavigationBarLesson extends LinearLayout { 
    private LessonConfig config = LessonConfig.getInstance(); 
    private ArrayList<NavigationCircle> navigationCircles; 
    private int pageCount; 

    public NavigationBarLesson(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public NavigationBarLesson(Context context) { 
     super(context); 
     init(context); 
    } 

    private void init(Context context) { 
     Log.i("init","yes"); 
     pageCount = config.getLektionCount(); 
     navigationCircles = new ArrayList<NavigationCircle>(); 

     for(int i=0; i < pageCount; i++){ 
      this.addView(new NavigationCircle(context)); 
     } 

    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

     int width = View.MeasureSpec.getSize(widthMeasureSpec); 
     int height = View.MeasureSpec.getSize(heightMeasureSpec); 

     setMeasuredDimension(width, height); 
    } 

} 

public class NavigationCircle extends ImageView{ 
    private static Bitmap img; 
    private Bitmap activeImg; 


    public NavigationCircle(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public NavigationCircle(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public NavigationCircle(Context context) { 
     super(context); 
     init(); 
    } 

    public void init() { 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     lp.setMargins(0, 0, 5, 0); 
     this.setLayoutParams(lp); 
     this.setBackgroundResource(R.drawable.upcoming_pages); 
    } 

    public Bitmap getImg() { 
     return img; 
    } 

    public Bitmap getActiveImg() { 
     return this.activeImg; 
    } 
} 

답변

1

글쎄, 난이 표시되지 않습니다. LinearLayout에 동적으로 추가 된 TextView 또는 ImageView와 같은 간단한 뷰를 사용하여 수평 LinearLayout을 만듭니다.

+0

나는 그것에 동의한다! –

+0

좋아, 이제 for 루프를 사용하여 this.addView (new NavigationCircle (context)); 그래서 onDraw를 사용하지 않아도됩니다. 그러나이 특수 점을 다른 드로어 블 resource와 함께 그려야하기 때문에 어떻게이 점들의 현재 활성화되어있는 사용자 지정 ListView를 말할 수 있습니까? 내 생성자는 일단 호출 될 수 있기 때문에 ... 위의 예제 코드를 원래의 질문으로 편집합니다. – krackmoe

+0

점을 그리는 동안 현재 '활성'또는 '중요'점의 ID가 포함 된 var (활성 인스턴스 int 변수)을 확인하고 다르게 그립니다. 또한 클릭 리스너를 추가하십시오 (모든 뷰에 클릭 수신기를 추가 할 수 있음, ImageView도 있음). 서로 다른 점에 다른 클릭 리스너를 추가 할 수 있으며 원할 때마다 일부 리스너를 비활성화 할 수도 있습니다. 또한 LinearLayout 또는 ListView 대신 HorizontalScrollView를 사용할 수 있습니다. 이는 내가 추측하는 용도에 적합합니다. 행운을 빕니다. – Yar

관련 문제