настраиваемая панель навигации android - PullRequest
0 голосов
/ 05 февраля 2012

Я хочу создать настраиваемую горизонтальную панель навигации, которая состоит из такого количества точек, сколько у меня есть страниц.

Мои мысли:

  1. Создание пользовательского списка ListView
  2. Создать точку класса расширяется от представления
  3. Добавить все эти точки в настраиваемый список динамически ..

Правильно ли это сделать?

РЕДАКТИРОВАТЬ:

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 Ответ

1 голос
/ 05 февраля 2012

Ну, я не понимаю, зачем вам нужен ListView.Создайте горизонтальный LinearLayout с некоторыми простыми представлениями, такими как TextView, ImageView и т. Д., Динамически добавленными в LinearLayout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...