0

カスタム ビュー クラス (描画用のキャンバス) があります。画面全体を占めるようにしたい場合は、クラスをインスタンス化し、次のように setContentView を呼び出します。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        drawingPanel = new DrawingPanel(this);
        setContentView(drawingPanel);
}

ただし、画面をxmlレイアウト(activity_make.xml)に基づいて、たとえば2つの要素、1つのボタン、および描画キャンバスのプレースホルダーにしたい場合、カスタムビューをビュープレースホルダーに「貼り付ける」にはどうすればよいですか?

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_make); // the layout which has a button and a placeholder view
      drawingPanel = new DrawingPanel(this); // instantiating my canvas
      View drawPanelPlaceholder = (View) findViewById(R.id.drawingview);
      // how do i stick the drawingPanel into the drawPanelPlaceholder?
}

または、これにアプローチするより良い方法はありますか?これに関するドキュメントへのリンクも大歓迎です!

4

3 に答える 3

1

カスタムビューをXMLレイアウトで直接インスタンス化できます。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
  <com.mypackage.DrawingPanel 
      android:id="@+id/drawin_panel"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" />
</LinearLayout>

開発者ガイドのカスタムコンポーネントに関するいくつかのドキュメント

于 2012-10-15T12:55:13.360 に答える
1

DrawingPanelクラスがViewを拡張する場合、次のようなことができます。

xmlで、このカスタムコンポーネントをパッケージ名で宣言します。

<com.myview.DrawingPanel android:id="@+id/drawingview" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >

com.myview.DrawingPanelは、私が説明するために使用した名前にすぎないことに注意してください。ただし、DrawingPanel.classと同じパッケージ名を使用していることを確認してください。

そして今、あなたのonCreateで、

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_make); 
      drawingPanel = (DrawingPanel) findViewById(R.id.drawingview);

}
于 2012-10-15T12:55:54.053 に答える
0

drawPanelをdrawPanelPlaceholderに追加する場合は、drawPanlePlaceholderでViewGroupを拡張する必要があります。したがって、ViewGroup、RelativeLayout、LinearLayoutなどの場合があります。次に、これを行うだけです

drawPanelPlaceholder.addView(drawingPanel);
drawPanelPlaceholder.invalidate();
于 2012-10-15T12:54:26.140 に答える