[英]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.