0

Androidでレイアウトとビューをいじっています。私のレイアウトは次のようになります。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <com.mycode.MyView
            android:id="@+id/MyView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        />

        <LinearLayout
            android:id="@+id/leftpane"
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.95"
            android:background="@color/leftpane_background"
            android:gravity="center"
            android:orientation="vertical"
            android:scrollbarStyle="insideOverlay" >

        </LinearLayout>
</LinearLayout>

行にコメント<com.mycode.MyView .... />を付けると、左側の線形レイアウト (id leftpane を持つ) が表示されますが、それ以外の場合は表示されません。左ペインのレイアウト (スクロール ビューのレイアウトなど) の後に別のレイアウトを追加すると、それも表示されません。カスタム ビュー (MyView) を使用すると、他のすべてのレイアウトが消えるのはなぜですか? 私がやりたいことは、アプリケーションの背景にカスタム ビューを作成し、そこで画像を表示したり、スクロール ビューやボタンなどの背景に他のビューを表示したりすることです。これは MyView クラスのコードです。アクティビティの背景に画像を描画する必要があることに注意してください(背景全体に、明らかにアクションバーは含まれません):

/**
*/
class   MyView extends View
{
    TextPaint   text_paint;
    Paint       paint;

    private void    InitView()
    {
        text_paint = new TextPaint( Paint.ANTI_ALIAS_FLAG );
        text_paint.setColor( Color.BLACK );
        paint = new Paint();
    }

    public MyView(Context context)
    {
        super(context);
        InitView();
    }

    public MyView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        InitView();
    }


    public MyView(Context context, AttributeSet attrs, int defaultStyle)
    {   
        super(context, attrs, defaultStyle);
        InitView();
    }


    @Override
    protected void  onDraw( Canvas canvas )
    {
        super.onDraw(canvas);
        //int   w, h;
        //w = canvas.getWidth();
        //h = canvas.getHeight();
        //paint.setColor( Color.WHITE );
        //canvas.drawRect(0, 0, w-1, h-1, paint );
        //canvas.drawText( "ciao", 100, 100, text_paint);
    }

};
4

2 に答える 2

0

ビューの高さを次のように変更してみてください。

android:layout_height="wrap_content" 
于 2012-12-09T12:09:34.907 に答える
0

カスタムMyViewのonMeasureメソッドをオーバーライドしたときにエラーが発生した可能性があるため、MyViewはすべての親ビューと一致します。MyViewのonLayoutメソッドとonMeasureメソッドにあるコードを表示できますか。

于 2012-12-09T13:07:13.950 に答える