используйте setLayoutParams (), но это не работает - PullRequest
2 голосов
/ 17 декабря 2011

Я создаю собственный view-MyImageView-для рисования растрового изображения в нем, я использую setLayoutParams (), чтобы установить ширину и высоту моего вида, но это не работает, я использую log для отслеживания ширины и высоты моего вида, я обнаружил, что оба они равны 0, почему ширина и высота не равны 300? вот часть моего основного кода активности:

    myCanvas=new MyImageView(CanvasTest3Activity.this,Path);
    LinearLayout.LayoutParams p=new LinearLayout.LayoutParams(300,300);
    myCanvas.setLayoutParams(p);

вот часть кода моего MyImageView:

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int parentwidth=MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight=MeasureSpec.getSize(heightMeasureSpec);
    int mywidth=(int)(parentHeight*0.5);
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),mywidth);
    }

1 Ответ

1 голос
/ 17 декабря 2011

Вам нужно получить родительский вид и использовать метод add, чтобы добавить свой вид + ваши параметры вида.Примерно так:

"ParentViewInstance.add (this_is_my_child_view, this_is_the_layout_params_for_my_child_view)"

Это означает, что тип LayoutParams вашего дочернего представления должен быть того же типа, что и LayoutParams ParentView.Взгляните на эти ответы для примеров кода.

...