キャンバスTextView
に追加することは可能ですか?ImageView
4 に答える
Canvas は ViewGroup を継承しないため、子ビューを追加する機能がありません。
Canvas では、TextView や ImageView などの子コントロールを追加する代わりに、drawBitmap メソッドと drawText メソッドを使用して画像やテキストを描画します。
回り道ですが、このチュートリアルではキャンバスにテキストビューを追加します。
http://www.helloandroid.com/tutorials/how-draw-multiline-text-canvas-easyly
- ビュー (キャンバスを使用している) を RelativeLayout 内に配置します。
public class YourComponent extends View{
@Override
protected void onDraw(Canvas canvas)
...
public void onDraw(){
....
....
ImageView yourImageView = .....
RelativeLayout.LayoutParams fParams = new RelativeLayout.LayoutParams(25,25);
fParams.leftMargin = 100; //x coordinate
fParams.topMargin = 25; /y coordinate
yourImageView.setLayoutParams(fParams);
((RelativeLayout) YourComponent.this.getParent()).addView(yourImageView);
}
}
上記のコード: ビューの 25x25 の寸法を示すレイアウト パラメータを作成しました。その後、マージンを使用して親レイアウトの適切な位置を設定しました。この LayoutParams を ImageView に設定します。そして最後に、このimageViewを親レイアウトに追加しました。
ただし、onDraw() の実行中に外部ビューで操作を呼び出すと、onDraw() が停止する可能性があることに注意してください。したがって、この方法を使用する場合は、すべての onDraw 操作が完了していることを確認してください。なぜこれが起こるのかよくわかりません。私はまだそれについてあまり観察しようとしませんでした。
ImageView と TextView を自由に配置する必要がある場合は、RelativeLayout を使用する必要があります。
RelativeLayout には高度な配置機能があり、オーバーラップが可能です。