簡體   English   中英

使用自定義視圖設置布局

[英]Set up a layout with a custom view

我有一個自定義視圖類(用於繪圖的畫布)。 當我希望它占用整個屏幕時,我實例化該類並調用setContentView,如下所示:

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

但是,當我希望屏幕基於xml布局(activity_make.xml),其中包含2個元素,一個按鈕和繪圖畫布的占位符時,如何將我的自定義視圖“粘貼”到視圖占位符中?

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?
}

或者有更好的方法來解決這個問題嗎? 有關此文檔的鏈接也很感激!

您可以直接在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>

一些關於開發人員指南中的自定義組件的文檔

如果您的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);

}

如果要將drawingPanel添加到drawPanelPlaceholder,drawPanlePlaceholder應該擴展ViewGroup。 所以它可以是ViewGroup,RelativeLayout,LinearLayout或其他。 那你只需要做到這一點

drawPanelPlaceholder.addView(drawingPanel);
drawPanelPlaceholder.invalidate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM