Android自定义视图和可视按钮
我创建了自定义视图,并希望添加view.button,因此我创建了以下解决方案:Android自定义视图和可视按钮,android,button,view,Android,Button,View,我创建了自定义视图,并希望添加view.button,因此我创建了以下解决方案: Public void onCreate(Bundle savedInstanceState) { Button up; up = new Button(getApplicationContext()); up.setText("ahoj"); up.setHeight(100); up.setWidth(100); up.setTop(200); up.se
Public void onCreate(Bundle savedInstanceState)
{
Button up;
up = new Button(getApplicationContext());
up.setText("ahoj");
up.setHeight(100);
up.setWidth(100);
up.setTop(200);
up.setLeft(100);
LinearLayout layout = new LinearLayout(getApplicationContext());
super.onCreate(savedInstanceState);
setContentView(layout);
myview view = new myview(this);
layout.addView(view);
layout.addView(up);
我只看到我的视图,但没有按钮。我的视图只绘制一些PNG文件。有人知道问题出在哪里吗?非常感谢。最可能的原因是您的自定义视图添加了布局参数
匹配父视图
。它占据了整个布局,按钮不可见。尝试使用WRAP_CONTENT
params添加自定义视图:
MyView view = new myview(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LAYOUTParams.WRAP_CONTENT)
layout.addView(view, lp);
最可能的原因是您的自定义视图添加了布局参数
MATCH\u PARENT
。它占据了整个布局,按钮不可见。尝试使用WRAP_CONTENT
params添加自定义视图:
MyView view = new myview(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LAYOUTParams.WRAP_CONTENT)
layout.addView(view, lp);
您的代码是正确的,但顺序错误。试试这个:
Public void onCreate(Bundle savedInstanceState)
{
Button up;
LinearLayout layout = new LinearLayout(getApplicationContext());
up = new Button(getApplicationContext());
up.setText("ahoj");
up.setHeight(100);
up.setWidth(100);
up.setTop(200);
up.setLeft(100);
myview view = new myview(this);
layout.addView(view);
layout.addView(up);
setContentView(layout);
super.onCreate(savedInstanceState);
}
您的代码是正确的,但顺序错误。试试这个:
Public void onCreate(Bundle savedInstanceState)
{
Button up;
LinearLayout layout = new LinearLayout(getApplicationContext());
up = new Button(getApplicationContext());
up.setText("ahoj");
up.setHeight(100);
up.setWidth(100);
up.setTop(200);
up.setLeft(100);
myview view = new myview(this);
layout.addView(view);
layout.addView(up);
setContentView(layout);
super.onCreate(savedInstanceState);
}
在调用
setContentView
之后向布局添加视图是完全可以接受的。我认为问题不在订单上。此外,理想情况下,您应该在方法的最开始调用super.onCreate
,而不是在方法的最后调用。在调用setContentView
之后向布局添加视图是完全可以接受的。我认为问题不在订单上。另外,理想情况下,您应该在方法的最开始调用super.onCreate
,而不是在方法的最后调用。