2009-09-24 7 views
10

カスタムイメージビューを作成するには、画面上にテキストを描画するImageViewを拡張しますが、エミュレータ画面に何も表示されませんが、ログメッセージとprintlnsはログコンソールに表示されます。私は何かしないのですか?カスタムイメージビューの作成

これは、これは私のCustomImageView

public class CustomImageView extends ImageView 
{ 

    /** 
    * @param context 
    */ 
    public CustomImageView(Context context) 
    { 
     super(context); 
     // TODO Auto-generated constructor stub 
     setBackgroundColor(0xFFFFFF); 
    } 

    /** 
    * @param context 
    * @param attrs 
    */ 
    public CustomImageView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @param context 
    * @param attrs 
    * @param defStyle 
    */ 
    public CustomImageView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     // TODO Auto-generated method stub 
       super.onDraw(canvas); 
     System.out.println("Painting content"); 
     Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG); 
     paint.setColor(0x0); 
     paint.setTextSize(12.0F); 
     System.out.println("Drawing text"); 
     canvas.drawText("Hello World in custom view", 100, 100, paint); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) 
    { 
     // TODO Auto-generated method stub 
     Log.d("Hello Android", "Got a touch event: " + event.getAction()); 
     return super.onTouchEvent(event); 

    } 
} 

onTouchEvent(でさえ、ログメッセージである

public class HelloAndroidActivity extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     //  setContentView(R.layout.main); 
     CustomImageView myView = new CustomImageView(getApplicationContext()); 
     System.out.println("Setting the view"); 
     myView.invalidate(); 
     setContentView(myView); 
     System.out.println("Calling invalidate"); 
    } 
} 

私の活動である)が印刷されますが、何も塗られていません。

これは、代わりにヘキサ値のレイアウト

<?xml version="1.0" encoding="utf-8"?> 

<AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/AbsoluteLayout"> 
</AbsoluteLayout> 

答えて

3

使用カラー値Color.WHITEまたはColor.BLACKを持っている私のmain.xmlです。

+0

ありませんが、それは – Ram

+0

@Ramを動作しません - 唯一の問題は、色の値でした。 Colorクラスを使用してカラー値を生成する必要があります。 – bhatt4982

+2

または0xAARRGGBBという形式のカラーヘキサ値を使用します。 白= 0xFFFFFFFFと黒= 0xFF000000 – bhatt4982

1

キャンバスのサイズを確認しましたか?イメージビューでは、ビットマップ/ドロワブルのサイズが返され、scaletypeフラグに基づいてビューのサイズが決定されます。私はあなたのコードで、レイアウトの必要性のためのビューのサイズを決定するものは何も表示されません。

-Rick

関連する問題