2011-12-17 12 views
0

カスタムビュー-ImImageViewを作成してビットマップを描画します。setLayoutParams()を使用してビューの幅と高さを設定しますが、動作しません。私のビューの幅と高さを追跡するログ、私はそれらの両方が0であることを発見した、なぜ幅と高さが両方300ではない?ここに私のメインのアクティビティコードの一部です:setLayoutParams()を使用しても動作しません

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

あなたは親ビューを取得し、ビュー+あなたのビューを追加するには、Addメソッドを使用する必要がありますparams。ような何か:

「ParentViewInstance.add(this_is_my_child_view、this_is_the_layout_params_for_my_child_view)」

これはあなたの子ビューのLayoutParamsのタイプは、ParentView LayoutParamsと同じタイプでなければならないことを意味します。コードサンプルについてはanswersをご覧ください。

+0

LinearLayoutレイアウト= new LinearLayout(this); ... layout.addView(myCanvas、p);しかし、最終的に私の画面に2つのビューが表示されます...私は、私はxmlでビューを追加する必要がありますか? –

+0

ビューをプログラムで作成した場合は、xmlレイアウトに追加する必要はありません(事前に考えておくだけで、既存のレイアウトにどのように組み込むか)。 – hovanessyan

関連する問題