2011-07-25 6 views
0

私はこのようにScrollViewに入れカスタムビューを持っている:アンドロイドScrollView見えないカスタムビュー

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <com.test.view android:id="@+id/myview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</ScrollView> 

私もonMeasure、onDraw()と私のカスタムビューで多くの他の方法を実装している:

@Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(600, MeasureSpec.EXACTLY)); 
     width = MeasureSpec.getSize(widthMeasureSpec); 
     height = MeasureSpec.getSize(heightMeasureSpec); 
} 

アプリケーションを起動すると、onDraw()メソッドから多くのログが取得され、TouchEventは処理されますが、[カスタムビュー]は表示されません。それはそこにあるようですが、目に見えないように...

多分私は何かを見逃しています...?

おかげ

UPDATE

は、カスタムビューは何も特別な、ビットマップを示しただけで表示されません:

private class myView extends View{ 

public myView(Context context) { 
    super(context); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.packagebm); 
    canvas.drawBitmap(bm, 0, 0, null); 
    Log.i("myview", "onDraw()"); 
} 

@Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(300, MeasureSpec.EXACTLY)); 

    } 
    } 
+0

どのように見えるでしょうか?おそらくあなたのビューから完全なコードを投稿してください – FoamyGuy

+0

あなたがスクロールビューを取り除くと、それは違いを生みますか? – FoamyGuy

+0

<_ <はい、私は、ビューをScrollViewにしたいのです。 – Ceeds

答えて

0

あなたのカスタムビューのonMeasureでsetMeasuredDimensionを呼び出す必要があります。だからこれは次のようになります:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, height); 
    setMeasuredDimension(widthMeasureSpec, resolveSize(600, heightMeasureSpec)); 
} 
+0

私がscrollViewにカスタムビューを置いた場合は、単にonSizeChanged()とonDraw()がビュー用に呼び出されない...任意の提案? – CoDe