0

我想开发一个应用程序,其中屏幕上有一个按钮,单击该按钮后,相机将打开,然后拍照,按钮所在的布局展开,照片位于此按钮下方。

我在一个屏幕截图的应用程序中展示了这个东西:

在此处输入图像描述

点击照片后,它会捕捉照片,然后此布局展开,照片如下所示:-

在此处输入图像描述 在此处输入图像描述

我想在我的应用程序中做同样的事情。

为此,我尝试了一些代码:-

(在 TableLayout 中的 TableRow 中我的应用程序中已经有一些字段)

首先,我创建一个 tableRow1(比如说),然后创建一个 TableLayout,然后为按钮创建一个 TableRow2,为 Image 创建一个 TableRow3。我将按钮插入tableRow2,然后将此tableRow2 插入TableLayout,然后将TableLayout 插入tableRow1。拍摄照片后,我将 Image 插入 TableRow3,然后将此 tableRow3 插入 TableLayout。

但是这段代码不起作用,这段代码也没有给出任何错误。

代码:

tableRow1 = new TableRow(this);
tableRow1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

tableLayout = new TableLayout(this);
tableRow2 = new TableRow(this);

tableLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tableRow2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

buttonPhoto = new Button(this);
buttonPhoto.setText("Photo");
buttonPhoto.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

tableRow2.addView(buttonPhoto);

tableLayout.addView(tableRow2, new TableLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

tableLayoutMain.addView(tableLayout, new TableLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));



buttonPhoto.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            method1();
        }
    });

public void method1(){

    tableRow3 = new TableRow(this);

    tableRow3.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

    imageViewPhoto = new ImageView(this);
    imageViewPhoto.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 110));
    tableRow3.addView(imageViewTakePhoto);

    tableLayout.addView(tableRow3, new TableLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}

通过使用此代码,我什至无法在屏幕上看到按钮。

4

1 回答 1

0

尝试对LayoutParams添加到的视图也使用正确的TableRows

tableRow1 = new TableRow(this);
tableRow1.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
tableLayout = new TableLayout(this);
tableRow2 = new TableRow(this);
buttonPhoto = new Button(this);
buttonPhoto.setText("Photo");
buttonPhoto.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
tableRow2.addView(buttonLocationPhoto);
tableLayout.addView(tableRow2, new TableLayout.LayoutParams(
            TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
buttonPhoto.setOnClickListener //...

和方法:

public void method1(){
    tableRow3 = new TableRow(this);
    imageViewPhoto = new ImageView(this);
    imageViewPhoto.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 110));
    tableRow3.addView(imageViewTakePhoto);
    tableLayout.addView(tableRow3, new TableLayout.LayoutParams(
                TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT));
}

另外,在您的问题中,我看到您谈到将 添加tabLelayout到主表tableRow1中,然后添加(如果它不在布局中)tableRow1到主表中。在这种情况下:

tableRow1.addView(tableLayout, new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
//add the tableRow1 to the main table?!?

但是,在你的代码中你没有这个,而是你有这一行:

tableLayoutMain.addView(tableLayout, new TableLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
于 2012-12-21T20:23:20.130 回答