我有一个自定义视图类(用于绘图的画布)。当我希望它占据整个屏幕时,我实例化该类并调用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?
}
或者有更好的方法来解决这个问题吗?有关此文档的链接也很受欢迎!
答案 0 :(得分: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>
关于开发人员指南的custom components的一些文档
答案 1 :(得分: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);
}
答案 2 :(得分:0)
如果要将drawingPanel添加到drawPanelPlaceholder,drawPanlePlaceholder应该扩展ViewGroup。所以它可以是ViewGroup,RelativeLayout,LinearLayout或其他。那你只需要做这个
drawPanelPlaceholder.addView(drawingPanel);
drawPanelPlaceholder.invalidate();