2012-10-15 28 views
0

我有一個自定義視圖類(用於繪圖的畫布)。當我希望它佔據整個屏幕,我實例化類並調用的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? 
} 

還是有更好的方法來解決這個問題嗎?有關此文檔的鏈接也感謝!

回答

1

如果您DrawingPanel類擴展視圖,你可以做這樣的事情,

在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); 

} 
+0

由於雄激素!任何想法最後一次對drawingPanel的引用是否返回null? – Hoff

+0

我不確定。但使用xml文件編輯您的問題,並使用drawingpanel類創建您的問題。讓我看看我是否幫助。 –

0

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

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

你可以在你的XML佈局直接instanciate你的自定義視圖。

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

一些文檔的開發者指南,瞭解有關custom components

相關問題