Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android自定义视图和可视按钮_Android_Button_View - Fatal编程技术网

Android自定义视图和可视按钮

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

我创建了自定义视图,并希望添加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.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
,而不是在方法的最后调用。