0
我想做一個自定義的水平導航欄,其中包含儘可能多的點,因爲我有頁面。自定義導航欄android
我的想法是:
- 創建自定義的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;
}
}
我同意這一點! – 2012-02-05 10:54:00
好吧,我現在將它們全部添加到for循環中,使用this.addView(new NavigationCircle(context)); 所以onDraw沒有被使用,這效果很好。 但我怎麼能告訴我的自定義ListView,這些點中的哪一個在此刻處於活動狀態,因爲這個特殊的點必須用另一個可繪製的資源繪製。 因爲我的構造函數可以被調用一次...我編輯上面的示例代碼到我的初始問題。 – krackmoe 2012-02-05 11:46:04
繪製點時,請檢查包含當前「活動」或「重要」點的id的某個var(例如,一個活動實例int變量),並以不同的方式繪製它。此外,添加一個點擊偵聽器(顯然你可以添加一個點擊偵聽器到任何視圖,ImageView也是如此)。您可以將不同的點擊監聽器添加到不同的點,甚至可以隨時禁用一些監聽器。此外,您可以使用HorizontalScrollView而不是LinearLayout或ListView,它適合您的目的。祝你好運。 – Yar 2012-02-06 07:12:41