0

XML ファイル (box.xml) からレイアウトを取得するカスタム コンポーネントを作成しようとしています。いくつかのチュートリアルを実行しましたが、何も表示できないようです。以下はカスタム コンポーネントのコンストラクタで、コードはエラーなしで実行されます。

public class MyView extends LinearLayout {
    //Constructor required for inflation from resource file
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);        
        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view=layoutInflater.inflate (R.layout.box, this);                        
        Log.d("CONSTRUCTOR 2", "TESTER");        
    }
}

これを使用して、コンポーネントをレイアウトに追加します。

<com.mysample.MyView android:layout_width="50dp" android:layout_height="38dp" android:background="#FF000000" />

黒いブロックは画面に表示されますが、膨張させたxmlファイルのレイアウトでは表示されません。

4

1 に答える 1

2

作成したビューを線形レイアウトに追加する必要があります。

    public MyView(Context context, AttributeSet attrs) {
        スーパー (コンテキスト、属性);
        View view = inflate(context, R.layout.box, null);
        addView(ビュー);
    }

これはうまくいくはずです。ところで、Logcat にログが表示されますか?

これが box.xml (サンプル 1) です。MyView を使用する場合は、その完全修飾クラス名を使用する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<com.beanie.samples.drawing.MyView
Android:id="@+id/whiteboardView1" Android:layout_width="fill_parent"
Android:layout_height="fill_parent"></com.beanie.samples.drawing.MyView>
</LinearLayout>

このサンプル プロジェクトはこちらで確認してください。

于 2011-07-12T08:50:31.160 に答える